c++ 运行时检查失败 #2 - 变量“ToSend22”周围的堆栈已损坏
Posted
技术标签:
【中文标题】c++ 运行时检查失败 #2 - 变量“ToSend22”周围的堆栈已损坏【英文标题】:c++ Run-Time Check Failure #2 - Stack around the variable 'ToSend22' was corrupted 【发布时间】:2011-08-09 15:01:47 【问题描述】:我不知道为什么会这样——当我调用这个函数并向客户端发送 TCP 消息时,我得到了这个: 运行时检查失败 #2 - 变量“ToSend22”周围的堆栈已损坏。 每当客户端断开连接时。 ToSend22 是我正在做的 STD 字符串
const char *ToSend288 = ToSend22.c_str();
Client.Send(ToSend288, ToSend22.size());
为什么会这样?谢谢。
【问题讨论】:
Client.Send 是什么 API? SFML sfml-dev.org 你贴的两行代码没有问题。您的代码的问题在其他地方。对于新手来说,学习 C++ 编程最困难的事情之一是,仅仅因为错误出现在代码中的某个位置,NOT 是否意味着错误出现在代码中的那个位置。该错误通常发生在更早的某个时间。因此,如果您希望我们帮助找到问题,请发布更多代码。 我这里有5000行代码,我不能把它们都贴出来。不,我的意思是,它是一个游戏服务器,它已经完成了,只是那是错误。我该怎么办? 发送方法是您的代码吗?如果是这样,请发布,因为这可能是错误发生的地方。 【参考方案1】:很可能Client.Send
正在修改您传递给它的char*
缓冲区。
或者同一函数中的其他局部变量以某种方式被覆盖,这会影响ToSend22
变量。这个函数肯定涉及到数组或指针的误用。
请发布更多代码。
【讨论】:
以上是关于c++ 运行时检查失败 #2 - 变量“ToSend22”周围的堆栈已损坏的主要内容,如果未能解决你的问题,请参考以下文章