我将C语言用于自然语言处理项目。
我想存储一个字典文件。
我使用了以下定义语句
#define DICSIZE 46000
问题是关于号码46000,因为它是我可以输入的最大数量。
如果我尝试更大的数字,程序就会停止运行。
我该如何解决这个问题?
答案 0 :(得分:2)
程序停止不是因为DICSIZE
宏。这是用法。
我想,通过将此宏作为数组大小传递,可以在本地分配一些数组(即在堆栈中)。
int myArray[DICSIZE];
因此,当数量增加时,您可能会遇到问题。我建议使用malloc()
动态分配内存。
答案 1 :(得分:1)
我怀疑你在这样的函数中有一个大型数组声明:
int main()
{
MyRecordType myArray[DICSIZE];
...
return 0;
}
当DICSIZE
变大时,myArray
会变大,并且您的堆栈空间不足。
改为使用动态内存分配:
int main()
{
MyRecordType * myArray = malloc(DICSIZE * sizeof(myArray[0]));
assert(myArray);
...
free(myArray);
return 0;
}