delete で解放しているオブジェクトがありchar*
、そのデストラクタに free で解放されている があります。free を使用する理由は、strdup を使用malloc
してポインターを作成したためchar
です。私が使用してmalloc
いる理由は、ほとんどのコード パスで最初に strdup を使用したためです。このシナリオはメモリの破損を引き起こしますか?
1527 次
4 に答える
5
いいえ、呼び出しを適切に一致させれば、つまりfree()
で割り当てられたメモリmalloc()
とで割り当てられたメモリの場合、正常に動作します。delete
new
于 2009-10-28T08:40:46.950 に答える
2
あなたがしていることは正しいです。new
edされたクラスは で割り当てを解除する必要がありますが、 (直接的または間接的に)delete
で割り当てられたメモリを所有している場合は、 でそのメモリの割り当てを解除する必要があります。malloc
free
于 2009-10-28T08:42:16.390 に答える
1
あなたの実装は正しいです。free() を使用して、malloc() (または strdup()) で割り当てられたメモリを解放します。これはまさに何をすべきかです。
要件は、そのメモリの割り当てに使用されたものと一致するプリミティブでメモリを解放することです。そして、この要件は実装で満たされています。
于 2009-10-28T08:55:40.277 に答える