【发布时间】:2017-06-25 11:36:25
【问题描述】:
是否可以在堆上分配一个数组,即使它是在一个函数内的范围内?这是我的 C 程序:
void SimpleTextEditor()
{
char textEditor[1000000];
char operationText[1000002];
//do something with the arrays
}
这会导致 stackOverflow 异常,原因很明显,我试图分配两个大型数组。如果我将任何一个数组移到函数之外并使其成为全局变量(文件级变量),那么它将作为全局变量在堆上分配。
但我不想让我的变量全局化。是不是不能用malloc和calloc为数组动态分配内存?
【问题讨论】:
-
char *textEditor = malloc(1000000);...free(textEditor); -
你能用
static吗? -
“...因为全局变量是在堆上分配的”——你是从哪里得到这个想法的?
-
我在某处读过它。不要回忆链接以获得确切的参考。如果我错了,请纠正我。我是 C# 的 C 新手