gpt4 book ai didi

c++ - 使用 free() 时出现段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:12 25 4
gpt4 key购买 nike

此代码导致段错误:

int main(){

char *p;
char a[50] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
p = (char *)malloc(50*sizeof(char));

if(!p){
cout << "Allocation Failure";
cout << "\n";
}
else{
cout << "Allocation Success";
cout << "\n";
p = a;
cout << p;
cout << "\n";
free(p);
}

return 0;
}

执行此程序后的输出为:

Allocation Success

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Segmentation fault

我找不到错误。可能是什么原因?

最佳答案

这个:

p = a;

复制指针,而不是指向内存的内容。 p 现在指向数组 a 的第一个元素。因此,当您执行 free(p) 时,您是在尝试释放一个非动态数组,这没有任何意义。1

你应该调查strncpy()复制字符串。


<子>1。而且还会造成内存泄漏。

关于c++ - 使用 free() 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11075697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com