如何从空容器中获取非nullptr?

问题描述 投票:0回答:1

我使用 C API,它接受一个指向数组的指针。该数组可以为空。

当使用 :

声明指针时,API 可以按预期工作

T *ptr = new T[size];

但我想使用

C++
容器的底层指针(使用
.data()
),以避免负责释放。

所以,我像这样声明我的容器:

std::vector<T> vec(size);

不幸的是,当

size
0
时,
ptr
不是
nullptr
并且
vec.data()
nullptr
, 因此,API 的行为与以前不同。

有没有办法从空容器中获取非 nullptr ?

c++ pointers
1个回答
1
投票

避免负责释放。

在您的情况下,

std::unique_ptr
可能比
std::vector
更适合:

std::unique_ptr<T[]> ptr(size);

但是

size
无法使用该智能指针保存/检索...

© www.soinside.com 2019 - 2024. All rights reserved.