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 = "";

OKであり、NULLの場所を指すのとはまったく異なります

char *url =NULL;

逆参照すると危険です。

空の文字列はメモリ内に有効な場所があり、逆参照できます。.を期待して何も入っていないというだけです\0

于 2012-05-10T07:16:24.143 に答える