を破損し、私が持っているコードです:ランタイムチェックの失敗#2 - 変数の周りスタックは、ここではC++
#include <iostream>
#include <typeinfo.h>
typedef struct A
{
friend class W;
private:
char c;
void *v;
} A;
typedef struct LL
{
friend class W;
private:
int n;
LL *next, *prev;
} LL;
class W
{
private:
void Handle(void *arg1, void *arg2)
{
A *ob1 = reinterpret_cast<A*>(arg1);
ob1->c = 'c';
ob1->v = (void*)0xffffffff;
LL *ob2 = reinterpret_cast<LL*>(arg2);
ob2->n = 0xff;
ob2->next = new LL();
ob2->prev = 0;
}
protected:
void Set()
{
A *ob1 = new A();
LL *ob2 = new LL();
this->Handle(&ob1, &ob2);
}
};
class R : W
{
public:
R(void)
{
this->Set();
}
};
void main(void)
{
R *ob = new R();
}
は、私はダンプから次の結果を得ている: ランタイムチェックの失敗#2 - 変数 'ob2'の周りのスタックが壊れていました。
'http.exe':C:¥Users¥root¥Documents¥Visual Studio 2008¥Projects¥http¥Debug¥http.exe '
、シンボルがロードされました。
'http.exe':ロード 'C:\ WINDOWS \ SYSWOW64 \ ntdll.dllの'
'http.exe':ロード 'C:\ WINDOWS \ SYSWOW64 kernel32.dllの\'
'http.exe':ロード 'C:\ WINDOWS \ SYSWOW64 \ KernelBase.dll'
'http.exe':ロード 'C:\ WINDOWS \ winsxs \ x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb \ msvcr90d.dll'
ランタイムチェック失敗#2 - 変数 'ob2'の周りのスタックが壊れていました。
私quesionsは以下のとおりです。
- 私はこの問題を解決するために何をすべき?
- なぜ私はそのようなエラーを持っています、あなたは私に説明することができます、なぜそのexacltyが壊れていたのですか?
- なぜスタックは壊れていますか?ヒープではない?
おかげで、
敬具、