Mad*_*adz 2 c++ mfc visual-studio-2008 visual-c++
我有这段代码在调试期间不断抛出"缓冲区太小"的错误.
geoGraph.size=limit;
CString xAxis ="X axis: ",yAxis="Y axis: ";
for (int x = 0; x < limit; x++)
{
xAxis.Format(_T("%s%i "),xAxis,(x+1));
yAxis.Format(_T("%s%s "),yAxis,dialog_test.str[x]);
}
xAxis.Format(_T("%s \n%s "),xAxis,yAxis);// <---Error thrown
d.SetWindowTextA(xAxis);
Run Code Online (Sandbox Code Playgroud)
我得出结论,错误是由于Cstring xAxis太小而无法包含新文本,我是否正确,如果是,我该如何解决?
谢谢.
编辑:我很好奇为什么这个错误只在调试期间显示,而不是在我使用'start without debugging'运行应用程序时(我使用VS2008).
没有!真正的问题是:
切勿在格式中使用CString作为目标AND源!这可能在Release Version中有效,因为Memory MIGHT不会被更改,但是如果它被更改,则行为是未定义的.但这是一个真正糟糕的编码错误.
| 归档时间: |
|
| 查看次数: |
4826 次 |
| 最近记录: |