【发布时间】:2018-06-23 13:19:57
【问题描述】:
我正在尝试为 void** 数据数组创建一些动态数组。
std::vector<void*> data;
data.push_back(new double[1024]); // array of doubles
data.push_back(new short[1024]); // array of shorts
为了清理,我应该只使用
data.clear();
或者是否需要删除每个新的,如果需要,如何完成?
【问题讨论】:
-
真正的问题是你将如何使用这段代码?如果你只有一个
void *,你怎么知道向量中存储了什么类型? -
需要 void** 的函数采用类型数组的另一个参数。
-
您是否尝试连接到
C函数或基于C的API?我认为没有理由为 C++ 程序设计这样的设计。 -
是的,它是与 C API 的接口,并且代码实际上是使用 c++/cli,但 vector 和 c++/cli ref 类似乎并不混合......
-
API 可能知道什么类型,但是您的代码会丢失所有类型信息,因此发出对
delete []的调用将在笨拙的编码到不可能之间。
标签: c++ arrays pointers vector void-pointers