- 33 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 21:09:10 ]
- こんにちは。ポインタと free() についての質問になると思います。
C は初心者ながらも単機能な Web サーバを作ってみようと思い立ち、 libevent を触ってみています。 evbuffer という構造体が出てきますが、 evbuffer_free() では orig_buffer と buffer を free() しています。 void evbuffer_free(struct evbuffer *buffer) { if (buffer->orig_buffer != NULL) free(buffer->orig_buffer); free(buffer); } そこで、 orig_buffer と buffer の正体を見てみようと、 PHP でいう print_r のような関数を作って調べてみました。 evbuffer: 0x606080 size_t misalign: 0, totallen: 256, off: 4 void* cb: 0x0, cbarg: 0x0 u_char* buffer: 0x609100 [HOGE] u_char* orig_buffer: 0x609100 [HOGE] buffer と orig_buffer は同じ場所を指しているように見えます。 二回も free() して大丈夫なのでしょうか。
|

|