在xcode 调试C++ 代码时出现的EXC_BAD_ACCESS 错误

使用XCode 调试的时候,运行过程中报了EXC_BAD_ACCESS的错误。

google了一翻之后,这个错误因为是调用了一个被释放过的对象导致的,错误的伪代码如下:

void TCPClient::write(string message){
    
    uv_write_t write_req;
    
    uv_write(&write_req, handle, &buf, buf_count, on_write);
}

通过socket向一个服务器发送数据时,此函数有一个 write_req传到uv_write里,函数执行完后write_req会释放掉。

发送完毕后,服务器会返回,此时服务器会去读write_req,但是已经被释放了,导致了EXC_BAD_ACCESS的错误。


解决的办法是:不要在函数里创建这个write_req,应该存到对象里或用指针的方式创建,要在回调的时候不要被释放即可解决。

发布了70 篇原创文章 · 获赞 48 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/fwb330198372/article/details/52780760