【发布时间】:2016-12-13 16:34:06
【问题描述】:
这是我发生的部分代码和分段错误:
int main (int argc, char *argv[]) {
printf ("====================================================\n");
double pointArray[MAX_NUM_OF_POINTS][DIMENSION];
double range;
int num_of_nearest;
double queryPoint[DIMENSION];
int counter;
int dist;
int num;
printf ("====================================================\n");
}
MAX_NUM_OF_POINTS 定义为 100,000,000。
但是,当我将此数字更改为更小(例如 100,000)时,分段错误消失了。
谁能告诉我原因?
【问题讨论】:
-
如果没有看到程序的其余部分,很难回答。能否使用断点或打印语句来查看分段错误的确切发生位置?
-
您可能用完了堆栈空间...这似乎相关:stackoverflow.com/questions/2780100/…
-
pointArray对于 每个 维度是 800'000'000 字节,几乎是 800MB,而 Windows 上的默认堆栈大小仅为 1MB,Linux 上为 4/8MB。如果 DIMENSION 为 3,那么您的阵列面积约为 2.4GB
标签: c segmentation-fault