是一个奇怪的c++段错误



为什么这个代码出现分段错误?

int main(int argc,char *argv[]){
int *role;
sscanf(argv[1],"%d",role);
return 0;
}

…但是第二个是可以的:

int main(int argc,char *argv[]){
int *role = new int;
sscanf(argv[1],"%d",role);
return 0;
}

在第一个中,role是一个未初始化的指针:它不指向您"拥有"的任何内存。因此,sscanf函数正在将结果写入该内存区域,并且(正确地)失败。

最新更新