定义函数的最大数量

时间:2014-03-26 10:45:04

标签: c codeblocks

我将C语言用于自然语言处理项目。

我想存储一个字典文件。

我使用了以下定义语句

#define DICSIZE 46000

问题是关于号码46000,因为它是我可以输入的最大数量。

如果我尝试更大的数字,程序就会停止运行。

我该如何解决这个问题?

2 个答案:

答案 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;
}