【问题标题】:Increase the maximum size of char array [duplicate]增加char数组的最大大小[重复]
【发布时间】:2015-08-22 04:21:07
【问题描述】:

我用 C 语言编写了一些代码,将 char 数组的最大大小设为 100。效果很好。但是当我将 char 数组的最大大小增加到 10000 时,它给了我分段错误(因为它已经超出了它的限制)。有人可以告诉我如何增加最大大小并存储长度为 10000 的字符串。

即如何将“char a[100]”作为“char a[10000]”并执行相同的代码????

【问题讨论】:

  • 没有最大尺寸,只有保留尺寸。你似乎犯了一个错误。请发布一个完整的最小示例,并确保将所有源代码格式化为源代码({} 按钮在输入字段上)。
  • 贴出对array进行操作的代码a,以便更清楚地解决问题
  • 现代机器出现 10k 数组的问题是不寻常的。段错误通常不是分配限制问题的正确错误。您可能有一个错误,恰好通过使数组变大而暴露出来。

标签: c arrays char size max


【解决方案1】:

您可以动态分配数组:

#include <stdlib.h>
char *a = malloc(100*sizeof(char));
if (a == NULL)
{
 // error handling
 printf("The allocation of array a has failed");
 exit(-1);
}

当你想增加它的大小时:

tmp_a = realloc(a, 10000*sizeof(char));
if ( tmp_a == NULL ) // realloc has failed
{
 // error handling
 printf("The re-allocation of array a has failed");
 free(a);
 exit(-2);
}
else //realloc was successful
{
 a = tmp_a;
}

最后,当不再需要数组时,记得释放分配的内存:

free(a);

基本上realloc(prt, size) 返回一个指向具有size 指定大小的新内存块的指针,并释放ptr 指向的块。如果失败,则不会释放原始内存块。 请阅读herehere 了解更多信息。

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 2018-04-14
    • 2013-11-30
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多