增加char数组的最大大小

时间:2015-06-07 17:49:55

标签: c arrays char size max

我在C中编写了一些代码,将char数组的最大大小设为100.它运行良好。但是当我将char数组的最大大小增加到10000时,它会给我分段错误(因为它超出了它的限制)。有人能告诉我如何增加最大尺寸并存储长度为10000的字符串。

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

1 个答案:

答案 0 :(得分: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