2016-09-30 5 views
-2

2行目、4行目のNULLポインタ 'ch'の解除警告が表示されるNULLポインタの削除C++

なぜか分かりません。誰かが私を助けることができますか?

char *my_alloc(size_t size) { 
    char *ch = (char *)malloc(size); 
    //FIXED: If malloc fails -> exit program 
    if(*ch == NULL){ 
     exit(0); 
    } 
    return ch; 
} 
+1

'NULL'はC++で廃止予定です。代わりに' nullptr'を使用してください。また 'new'は' malloc'の代わりにC++で使われるべきです。また、プログラムの割り当てと返却ポインタはスマートポインタを返す必要があります。 – Slava

答えて

6

if(ch == NULL)あなたは

を必要とするものであるあなたch間接参照chは、項目b点かNULL

*ch == NULLチェックであるかどうかをコード*chch == NULL


if内部のチェックでY chは答えが

いくつかの点で delete[] ch続い
char *ch = new char[size]; 

です(あなたがあなたの質問に使用して報告するもの)C++用NULL

+0

と私はあなたが得るのは '警告'ではなく '例外'だと思います。 –

+0

ありがとうございました。なぜ説明できますか? – Ceesz

+0

@Ceesz answer edited –

0

です。

結果が失敗した場合、結果がnullであるかどうかを確認する必要はありません。

関連する問題