【问题标题】:Realloc - incompatible types when assigningRealloc - 分配时不兼容的类型
【发布时间】:2014-11-27 21:35:36
【问题描述】:

是否可以重新分配这样定义的变量:char string[128]? 我有一段这样的代码:

...
count = strlen(string);
if ((string = realloc(string, (count + 2) * sizeof(char))) == NULL) {
    ...
}
...

并且编译器说:“从类型‘void *’分配给类型‘char[128]’时类型不兼容”。类似的操作适用于定义char *string

【问题讨论】:

  • 这是未定义的行为。你应该预料到任何事情都会发生。

标签: c


【解决方案1】:

char string[128]; 定义了一个静态大小的chars 数组。无需为其分配内存,但另一方面,无法调整内存部分的大小。

要使用动态大小的数组,请在完成后将char *string;string = malloc(128)string = realloc(string, newsize)free(string) 结合使用。

【讨论】:

    【解决方案2】:

    char string[128]; 分配空间,所以字符串不是真正的指针。

    如果您将字符串定义如下,它将起作用:char *string;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2013-01-23
      • 2016-01-23
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多