请问一个问题?
有两个类A和B。main函数中有一个A的对象a,然后调用a对象的一个成员函数f。
在函数中,申明一个B的局部对象b。
类A和B是在不同的文件中,main函数也是在不同的文件中。
但是我在VS2008中单步调试的过程中,发现在函数f中生成的对象b中的数据异常。
类B的构造函数非常简单。但是我单步跟踪进入B的构造函数后,发现数据又是正常的。
但是出了B的构造函数后,观察对象b的数据,发现与刚才的数据不一致,为异常的数据。
比如对象b中的一个verctor在构造函数中没有任何操作,长度也是0,但是出了构造
函数后,这个vector的长度变得非常大。这样导致退出函数f后,发生如下错误:
Run-Time Check Failure #2 - Stack around the variable 'cvt' was corrupted.
但是我不在函数f中声明这个变量,而是在main函数中直接声明,没有任何问题。
请问这是什么原因?谢谢。是不是编译的问题呢?因为这几个文件都是放在同一个文件夹下》
作者: maoloverme1 发布时间: 2011-06-16
堆栈被破坏鸟
作者: c_losed 发布时间: 2011-06-16
作者: bdmh 发布时间: 2011-06-16
作者: q191201771 发布时间: 2011-06-16
作者: dizuo 发布时间: 2011-06-16
我做过实验:
f函数就是构造了一个对象,然后就返回。
构造函数也很简单。
赋值了几个字符串变量,都是空。
而且没有对我刚才说的那个vector进行操作。
而且只要是跟踪到B所在的那个文件,也就是观察this变量,数据都是正确的。
但是只要跑出那个文件,数据马上不正确。
作者: maoloverme1 发布时间: 2011-06-16
作者: ouyh12345 发布时间: 2011-06-16
学习了。。
作者: aa1013911535 发布时间: 2011-06-16
作者: luciferisnotsatan 发布时间: 2011-06-16
作者: maoloverme1 发布时间: 2011-06-16
作者: dingshaofengbinbin 发布时间: 2011-06-16
作者: zhao4zhong1 发布时间: 2011-06-16