同じpointであっても生成された方法を知らなければ解放できない?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
DDK

同じpointであっても生成された方法を知らなければ解放できない?

#1

投稿記事 by DDK » 18年前

お久しぶりです。
基本的な質問申しわけないですが。
関数の引数に short *p があるとします。
このpに対してfree(p)で解放すると delete(p)で解放するとは
何が違うのでしょうか。
そのpの本体の生成法によります?

例えば、他人に渡される関数
f(short *p){

}

があるとします。

pの内容とサイズを変更したい場合、新しいメモリを用意し、
最終的にその新しいメモリのアドレスをpに設定しなければなりません。
ところがこの前に元のメモリ領域が解放しなければならない。

てつ

Re:同じpointであっても生成された方法を知らなければ解放できない?

#2

投稿記事 by てつ » 18年前

mallocで確保したメモリはfreeで、newで確保したメモリはdeleteで
開放しなければいけないと参考書に書いてあった気がします。

keichan

Re:同じpointであっても生成された方法を知らなければ解放できない?

#3

投稿記事 by keichan » 18年前

malloc : free
new : delete
は二個一です。どちらかで作ったオブジェクトは対になる解放語でなければなりません。
C++言語でnewで生成したオブジェクトをfreeで解放してやるとデストラクタが働きません。
これはやってはならないことです。

閉鎖

“C言語何でも質問掲示板” へ戻る