提高字符数组的最大大小[复制]

问题描述 投票:2回答:1

这个问题已经在这里有一个答案:

我已经采取的100,效果不错字符数组的最大大小用C语言编写一些代码。但是,当我增加字符数组的最大大小为10000它给了我分段错误(因为它已超出限制)。谁能告诉我,我怎么能增加最大尺寸和存储长度10000的字符串。

即如何可以采取“CHAR [100]”为“炭A [10000]”和执行相同的代码????

c arrays char size max
1个回答
8
投票

您可以动态分配的数组:

#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进一步的信息。

© www.soinside.com 2019 - 2024. All rights reserved.