程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Malloc 错误 - 无法分配给可变大小的对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Malloc 错误 - 无法分配给可变大小的对象?

开发过程中遇到Malloc 错误 - 无法分配给可变大小的对象的问题如何解决?下面主要结合日常开发的经验,给出你关于Malloc 错误 - 无法分配给可变大小的对象的解决方法建议,希望对你解决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 动态分配.. 试试双指针

char **lines = 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,请注明来意。
标签:-错误