【发布时间】:2014-01-28 06:20:42
【问题描述】:
我有以下代码,它适用于 N=10 和 C=25,但如果我使用 N=50 和 C=25500,则会出现分段错误
#include <stdio.h>
#include <stdlib.h>
// create table
int *table;
table = (int *) malloc(sizeof(int) * C+1 * N+1);
if(table == NULL){
printf("[ERROR] : Fail to allocate memory.\n");
}
// initialize table
for(i =0; i < N-1; i++){
for(j = 0; j < C-1; j++){
//table[i*(C+1)+j]=0;
*(table + (i*(C+1)+j))=1;
}
}
printf("table made\n");
【问题讨论】:
-
所以这在没有
main()的情况下工作? -
确保 malloc 内部的数学运算是正确的,(您可能的意思是 (C+1)*(N+1))
-
您从哪里得到分段错误错误?将 printf 语句放入 for 循环并尝试找出您在哪个位置遇到分段错误。因为如果 malloc 没有为大量内存分配任何内存,我们可以在
if(table == NULL)条件中找到。请试试这个 -
valgrind 是帮助解决此类问题的好工具。
标签: c segmentation-fault