dev c ++中的SIGSEGV(分段错误)错误

时间:2013-10-26 19:47:44

标签: c++ dev-c++

当我在dev中运行此代码时,我有一个分段错误。在行“*(ap + j)= new int [10];”

int main(){
    int** ap;
    for(int j=0;j<10;j++){
        *(ap + j) = new int[10];
        for(int k=0;k<10;k++){
            *(*(ap+j) +k) = 1;
        }
    }
return 0;
}

4 个答案:

答案 0 :(得分:0)

您正在为数据分配内存,但没有为指针数组分配内存。您可以将ap的声明更改为int* ap[10];

答案 1 :(得分:0)

您永远不会为ap分配任何内存。类似的东西:

int** ap;
ap = new int*[10];

是你想要的。

答案 2 :(得分:0)

*(ap + j) = new int[10];中,您取消引用尚未分配的内存位置。首先,您必须自己分配变量ap

答案 3 :(得分:0)

你的问题是*(ap + j)= new ...

在为“ap + j”位置分配内存的情况下,问题是ap + j尚未成为有效的内存位置,因为您尚未初始化ap。因此,当您向ap添加j时,您会进入未初始化的内存空间,从而导致您的分段错误。