05:00 AM のダーティ ハック。同じプロセスのスレッド間で FIFO を使用してポインターのアドレスを渡すことにより、SO を犯しました。
total_buf = (char*)malloc(msize);
// ...
long addr = (long)&total_buf;
// ...
write(fifo, buf, 128);
レシーバー スレッドで total_buf へのポインターを受け取った後void* pt = (void*)addr;char* tbuf = (char*)pt;
、バッファーの内容が変更されていることに気付きました(gdb) x/1024xb tbuf
。
マルチスレッド化された Qt+pure pthreads アプリケーションのプラグインが直接通信しようとしている状況で、これが発生する理由として考えられるものは何ですか? なんらかの理由で、明らかなガベージコレクションではないと感じています.Linuxスレッドは共有プロセスメモリを使用しているため、アドレスの不一致はなく、ポインターの逆参照も問題ないようです.