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

[戻る]
かず 2005/07/27(水) 07:12:20
    if(p > size){
    free(l);
    l = dgetmem(p+p+2);
    b = l + p + 1;
    size = p;
    }

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

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

KING・王 2005/07/27(水) 07:57:23
順番が逆ですけど、
> 質問.2 文中に出てきた
>      dgetmemって、ご存知ですか?

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


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

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

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

PATIO 2005/07/27(水) 17:08:59
>質問.1 mallocやcallocがないのに、
>     freeは使えるのですか?

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

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

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

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

古いスレッドには追加発言できません。