正确的语法以对 char* 数组使用 new
Correct syntax to use new for char* array
我有以下内容
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。你只会混淆别人。
相关文章:
- 在类c++中使用new声明数组
- 在将 new 与指针一起使用时,创建数组的指定长度
- 声明C++数组(带或不带 "new" 关键字)
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 使用new创建数组而不声明大小
- 正确分配放置 new 的数组
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 使用new时如何重新分配dyyanmic数组,不使用realloc删除C++?
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 使用可变模板列表初始化数组,并放置new
- 如何获取由 new 创建的数组的开始和结束
- 使用 "new" 命令在 C++ 中的类构造函数中分配 2D 数组
- 构造函数不会将使用 new 初始化的数组作为参数
- 将指针返回使用New创建的数组数组
- 使用泛型成员变量"placement new"结构/类数组的正确方法是什么?
- 将内存分配给 2D 数组时,“new int*[rowCount];”的含义是什么?是 2D 数组,是指向数组的指针数组
- 使用 Marshal.FreeHGlobal() 来释放以前在本地分配了"new"的数组?
- 向量在我的类中.错误:数组new [-fpermissive]中的圆括号初始化项
- 新增[size]对象(args ..)在数组new [-fpermissive]中添加圆括号初始化器
- 错误:数组new中的size必须是整型[-fpermissive]