2

你能告诉我我在这里犯了什么错误吗?当我设置url = NULL然后比较它是否具有 NULL 是否由if(strlen(url)!=0)程序if(url!=NULL)崩溃或崩溃。我知道这是一件非常简单的事情,但我做错了什么。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{
    char* url="/v1.0/fafffsdf"  ;
    url=NULL;
    printf("%s\n",url);
    if(url!=0)
    {
        printf("It ain't NULL\n");
    }
    else
    {
        printf("It's NULL\n");
    }
}
4

1 回答 1

11

崩溃发生在

printf("%s\n",url);

指针指向NULL并且您正试图从那里读取,有效地取消引用NULL将产生分段错误的指针。

指向一个空字符串,如

char *url = "";

可以,并且与指向 NULL 位置(如

char *url =NULL;

如果取消引用,这是危险的。

空字符串在内存中具有有效位置,可以取消引用。只是它没有任何东西期望一个\0.

于 2012-05-10T07:16:24.143 回答