こんなコードを見ました。 – プログラミング – Home

こんなコードを見ました。
 
通知
すべてクリア

こんなコードを見ました。


かず
 かず
(@かず)
ゲスト
結合: 24年前
投稿: 62
Topic starter  

if(p > size){
free(l);
l = dgetmem(p+p+2);
b = l + p + 1;
size = p;
}

質問.1 mallocやcallocがないのに、
     freeは使えるのですか?

質問.2 文中に出てきた
     dgetmemって、ご存知ですか?


引用解決済
トピックタグ
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 21年前
投稿: 122
 

順番が逆ですけど、
> 質問.2 文中に出てきた
>      dgetmemって、ご存知ですか?

自作の関数か引数付マクロだと思われますが。
提示された部分以外のソースに定義されているのでは?
#簡単にMSDNでdgetmemを探したがみつかりませんでした。

> 質問.1 mallocやcallocがないのに、
>      freeは使えるのですか?

提示されている部分では、mallocやfreeが使用されていないだけで、
提示されていない部分で、使用されていれば全く問題ないのでは?
提示されたソースには、変数'l'の宣言などもありませんが、
'l'にNULLが代入されていれば、free(NULL)でも問題なかったと思います。

提示された情報(ソース)だけでは、情報不足で、以上のことぐらいしか回答できないと思いま
す。


返信引用
PATIO
(@patio)
Famed Member
結合: 5年前
投稿: 2660
 

>質問.1 mallocやcallocがないのに、
>     freeは使えるのですか?

仮に提示されている部分だけのソースでプログラムが作成されているとするなら
このfreeには意味がないような気がします。
KING・王さんが書かれているように'l'が0なら別に悪さもしません。
'l'が0以外でmallocやcallocで確保されたアドレスでないならプログラムが
不正終了しそうですけれど。

>質問.2 文中に出てきた
>     dgetmemって、ご存知ですか?

私も知りません。
少なくとも標準ライブラリの関数ではないと思います。

パッと見ると提示された部分のコードだけでプログラムが成り立っているとは思えません。
dgetmemがどんなものなのかとか、実際に動作するのに必要なソースを全部確認しないと
無理でしょう。
もし手元に提示された部分のソースしかないのでしたら解析するのは諦めた方がいいと
思います。
雲をつかむような話です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました