我有以下内容
typedef struct
{
int titleCount;
char** titles;
} myStruct;
然后
...
struct1->titleCount = 2;
struct1->titles = (char**) malloc(sizeof(char *) * (str->titleCount + 1));
...
使用 new
而不是 malloc
的正确语法是什么?
在示例中,标题指向指向 char 的指针数组,或者很可能是字符串。所以我会期待这样的东西:
titles = new char*[str->titleCount]; // or maybe keep the +1
后跟一个循环,用于分配各个字符串,并将指向它们的指针放入标题指向的数组中。
如果要从 C 移植到 C++,更好的解决方案是:
std::vector<std::string> myTitles;
整个结构是不必要的。
首先,分配内存的代码无效,因为您可能不会编写
struct1->titleCount
除非你在某处写过
struct struct1 *struct1 = malloc( sizeof( struct struct1 ) );
但是,从您提供的代码来看,您似乎需要分配
str->titleCount + 1
类型 char *
的元素
所以相应的代码将看起来像
str->titleCount = 2;
str->titles = new char * [str->titleCount + 1];
下次请显示可以编译的代码片段。从您的代码中不清楚什么是 struct1 和 str。你只会混淆别人。