2016-09-30 8 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) 당신이 NULL

*ch == NULL 점검 항목 점 b는 여부는 if


ch == NULL 체크 ch 여부를 내부 코드 *chch 역 참조를

필요하다 Y ch이 다 들어 NULL

+0

그리고 나는 당신이 얻는 것이 '경고'가 아니라'예외'라고 생각한다. –

+0

고마워. 이유를 설명해 주시겠습니까? – Ceesz

+0

@Ceesz 대답 편집 –

0

입니다 ++ (당신이 당신의 질문에 사용보고) 답은

char *ch = new char[size]; 

어떤 시점에서 delete[] ch 다음이다.

그런 다음 결과가 실패한 경우 던져 버릴 것처럼 null인지 점검 할 필요가 없습니다.