ポインタが割り当てられて親の呼び出し元/親関数に返されるCコードがここにあります。 GDBを使用して、ポインタの割り当ては問題ないことに気付きましたが、返すと、アドレスの最初の4バイトの上位ビットが失われます。基本的にはこのように書き:今Cポインタの問題:関数から返されたときにアドレス情報が失われる
allocate pointer A
allocate pointer B
Free A
Return B
、私はこれを変更する場合:
allocate pointer B
allocate pointer A
Free A
Return B
物事はうまく動作します。奇妙なことは、このコードが5年以上にわたって正常に機能していて、非常に特殊なケースでは私たちに問題を起こしているということです。私たちが心配しているのは、アドレスが変更されているということです.GDBを添付したときだけ、このエラーを検出することはできませんでした。
誰もが似たようなものを見たり、なぜこれが起こっているのか知っていますか?ちなみに、私たちはAまたはBで処理できる以上のものを書くつもりはないので、両方のバッファがデータの正しいサイズです。
ありがとうございました。
これを検査するコードなしでこれに答えるのは難しいです。 –
これはかなり曖昧です。 –
あなたは 'ポインタを割り当てる 'ことはしません。ポインタによって参照されるデータを割り当てます。 –