增加 char 数组的最大大小

Increase the maximum size of char array

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

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

您可以动态分配数组:

#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) returns 一个指向新内存块的指针,该内存块的大小由 size 指定,并释放 ptr 指向的块。如果失败,则不会释放原始内存块。 请阅读 here and here 了解更多信息。