当我在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;
}
答案 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时,您会进入未初始化的内存空间,从而导致您的分段错误。