【发布时间】:2013-12-29 11:18:38
【问题描述】:
我正在使用 malloc 分配足够的内存来存储 100 个字符串*:
string** ptr = (string**)malloc(100*sizeof(string*));
然后我在每个单元格中放入一个字符串*值:
for(size_t i = 0; i < 100; ++i){
ptr[i*sizeof(string*)] = stringdata[i]; // stringdata is a vector<string*>
}
在上面的for循环中,我没有做ptr[i],因为我知道每个ptr增量总是1个字节,但是sizeof(string*)可能超过1个字节。
但是,我见过其他人的代码,他们只是使用 ptr[i] 而没有额外的 sizeof(string*)。有谁知道为什么这也可以?
非常感谢
【问题讨论】:
-
请问
string是什么?还是应该是你在做 C++ 而不是 C? -
抱歉,是的,我使用 C malloc 但用于 C++ 程序。谢谢
-
你说的是std::string吗?如果是这样,您不应该使用
new吗?据我所知,这是一个对象 -
如果你使用std::string,使用
来存储! -
你应该解释为什么你真的需要使用
malloc。这可能是一个非常糟糕的想法。