これが私が今抱えている問題です:
class Header{
//something here
};
class Packet{
public:
Packet(Header* _header){
header = _header;
};
char buf[1000];
Header* header;
}
だから見た目はシンプル。ヘッダー (_header) を作成し、それを引数として使用してパケットを作成すると、すべてがデバッガーで適切に表示されます。パケットのポインター ヘッダーは、以前に作成した _header を指しています。
ここで、1000 文字を buf にロードし始めます。最初の数百文字については、問題ないように見えます。しかし、buf にコピーされる文字数が大きくなると (約 800)、パケットのポインター ヘッダーが突然ガベージされます。理由がわかりません。後で、作成されたパケットのヘッダーにアクセスしようとすると、アドレスがガベージされ、プログラムがクラッシュしました。
buf をロードする 2 つの方法 (のstrcpy
ように 1 つずつコピーする方法) を試しましbuf[i]=...
たが、それでも同じ問題に直面します。
これを明確にしたり修正したりする助けはありますか? ありがとう