正确的语法以对 char* 数组使用 new



我有以下内容

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。你只会混淆别人。

最新更新