增加 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 了解更多信息。
我用 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 了解更多信息。