我使用 C API,它接受一个指向数组的指针。该数组可以为空。
当使用 :
声明指针时,API 可以按预期工作T *ptr = new T[size];
但我想使用
C++
容器的底层指针(使用 .data()
),以避免负责释放。
所以,我像这样声明我的容器:
std::vector<T> vec(size);
不幸的是,当
size
是0
时,ptr
不是nullptr
并且vec.data()
是nullptr
,
因此,API 的行为与以前不同。
有没有办法从空容器中获取非 nullptr ?
在您的情况下,避免负责释放。
std::unique_ptr
可能比std::vector
更适合:
std::unique_ptr<T[]> ptr(size);
但是
size
无法使用该智能指针保存/检索...