0

これが私が今抱えている問題です:

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]=...たが、それでも同じ問題に直面します。

これを明確にしたり修正したりする助けはありますか? ありがとう

4

3 に答える 3