제목은 내 문자 포인터가 NULL을 가리키고, 또는 그냥 0포인터가 NULL을 가리키는 지 어떻게 확인합니까?
그래서 크기의 문자 배열을 가리키는 않다면 잘 모르겠어요해서 ... 잘못된 이름의 약간있을 수 있습니다 가
char* data = getenv("QUERY_STRING");
데이터가 null인지 (또는 길이가 <인지) 확인하고 싶습니다. 나는 시도했다 :
if(strlen(data)<1)
하지만 오류 얻을 : 나는 또한
if(data == NULL)
하지만 같은 결과
을 시도했습니다==24945== Invalid read of size 1
==24945== at 0x8048BF9: main (in /cpp.cgi)
==24945== Address 0x1 is not stack'd, malloc'd or (recently) free'd
합니다.
여기 무슨 일 이니? 이미 데이터를 가지고 시도해 봤는데 잘 작동합니다. null이거나 비어 있는지 확인할 수없는 것 같습니다.
나는 이것이 서로 다른 두 가지 (null과 empty)라는 것을 알고 있습니다. 어떤 데이터가 여기에 있는지, 그리고 null/empty인지 확인하는 방법을 알고 싶습니다.
사이드 노트 :'char *'가 아닌'const char *'를 사용해야합니다. [(C++) docs] (http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/) :'이 함수가 반환 한 포인터가 가리키는 문자열은 프로그램에 의해 수정되지 않아야합니다. ' – Cameron