大佬教程收集整理的这篇文章主要介绍了Malloc 错误 - 无法分配给可变大小的对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对于下面的 malloc 语句,我无法初始化可变大小的对象
@H_772_5@int textsize = BUF_SIZE; char *lines[textsize] = malloc(sizeof(char *) * textsizE);
目标是拥有一个指针数组,每个指针都将存储指向用户输入的 STDIN 行的指针。 textsize 是用户支持的输入行数。
错误:
@H_772_5@error: variable-sized object may not be initialized char *lines[textsize] = malloc(sizeof(char *) * textsizE);
这是因为您已使用 textsize 作为大小分配了行:-静态,然后您尝试使用 malloc 动态分配.. 试试双指针
,正如@A.Shenoy 提到的,你应该使用双指针。原因是当您执行 @H_772_5@char *lines[textsize] 时,您正在创建一个指向 char 数组的指针,但 malloc 返回一个 char 指针。所以解决方案是执行 @H_772_5@char **lines 来创建一个指向 char 指针的指针。您仍然需要为指针分配空间,这就是您可以初始化数组的方法;
@H_772_5@#define ARRAY_SIZE 5 // array of 5 Strings char **lines = (char**) malloc(sizeof(char*) * ARRAY_SIZE); int i; for (i = 0; i < ARRAY_SIZE; i++) { lines[i] = (char*) malloc(sizeof(char) * textsizE); } // The array is now allocated,and you can fill it with strcpy // Example for filling: char text[] = "Hello World!"; strcpy(lines[0],text);
以上是大佬教程为你收集整理的Malloc 错误 - 无法分配给可变大小的对象全部内容,希望文章能够帮你解决Malloc 错误 - 无法分配给可变大小的对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。