c-如何检查char指针在分配后是否为空



我在这段代码中为char指针分配了内存,我想检查它是否指向任何东西:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char *p  = (char*) malloc(sizeof(char)*10);
if(*p == 0)
printf("The pointer points nothing !n");
}

我检查了一下,如果它没有指向任何东西。此外,我打印指针的长度,它打印"3",尽管它什么也不打印。这是什么原因?如果它没有任何意义,我该如何检查?

您需要修改检查以检查返回的指针,而不是内容。类似的东西

if( p == NULL) {
fprintf(stderr, "The pointer points nothing !n");
return 1;
}

应该这样做。引用关于返回值的标准:

malloc函数返回一个空指针或一个指向已分配空间的指针。

失败时返回空指针,否则返回的指针应不等于空指针。

也就是说,

  • 指向内存的初始内容是不确定的,不要试图验证它。引用标准

    malloc函数为大小由size,其值不确定

    这是关于"检查长度"-这毫无意义。除非您已经存储(写入(了一些值,否则尝试测量初始内容是没有意义的,因为它是不确定的。您最终可能会遇到未定义的行为。

  • malloc()和族对返回指针的强制转换是多余的。在C.中完全可以避免

  • sizeof(char)在C中保证为1。因此,再次不需要使用sizeof(char)作为乘法器,本身

相关内容

  • 没有找到相关文章

最新更新