K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>>>free() の解説に、空ポインタの場合何もしないとあるので無問題です。 >>>C89もセーフですよ。 > >確かにfree(NULL)は無問題なのですが、以下の※の箇所は大問題でした。 > >| if ( (prm = malloc( sizeof( typChangePrm))) == NULL) { >| fprintf(stderr,"ERROR: memory allocation\n"); >| goto LERROR; ←ココ >| } >(中略) >| LERROR: >| free( prm->cpItem); ← ※ >| free( prm); >| return NULL; >|} > >このような箇所は「if ( prm ) free( prm->cpItem);」が必要ですね。 > >以下の箇所も間違っていますね。 > >誤>void PrmDestroy( typChangePrm *prm) >誤>{ >誤> int i; >誤> >誤> for ( i=0; i<prm->itemCount; i++) >誤> free(prm->cpItem); >誤> free(prm->cpItem); >誤> free(prm); >誤>} > >正>void PrmDestroy( typChangePrm *prm) >正>{ >正> int i; >正> >正> if ( prm && prm->cpItem) { >正> for ( i=0; i<prm->itemCount; i++) { >正> free(prm->cpItem[i]); >正> } >正> } >正> if ( prm) free(prm->cpItem); >正> free(prm); >正>} > >大変失礼しました。私の能力の低さが露呈してます(T-T)
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!