日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c语言分段错误空指针,C语言空指针总结 - 祂的小哥哥的个人空间 - OSCHINA - 中文开源技术交流社区...

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言分段错误空指针,C语言空指针总结 - 祂的小哥哥的个人空间 - OSCHINA - 中文开源技术交流社区... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

空指針就是指向不可訪問區域的的指針,它的值為NULL,地址一般是內存的首地址。詳情見代碼1、2及其運行結果。

NULL是標準庫定義的等于0的常量符號。

不可訪問和內存的劃分有關。系統會在每個程序被調用的時候為它分配一個內存段,這個內存段是物理地址經過偏移計算得來的,用來映射程序的所有內容。其中,空指針指向的內存地址和實際的物理地址不存在映射,也就是通過空指針所指向的地址找不到對應的物理地址。

空指針的應用。指針在被創建時會隨機指向一個內存地址,如果不加限制可能造成非法訪問、寫越界(寫越界的危害自己想象)。所以指針被創建的時候通常會指向一個有意義的內存。如果暫時沒有用到,則賦值為NULL,表示處于閑置狀態,不指向任何有意義的對象。同時指針指向的內存被釋放的時候也需要講指針置空,否則指針將對一個已經釋放的內存繼續保有訪問的權限,同樣具有安全問題。

空指針的危害。空指針指向不可訪問的區域,如果程序使用空指針進行訪問,將會導致程序出錯、中斷。詳情見代碼3及其運行結果。在使用一個指針變量的時候對其進行非空判斷可以避免這種情況。這也是通常的做法。

代碼1及其運行結果

#include

#include

int main()

{

//char * str = (char*)malloc(sizeof(char)*5);

char * str = NULL;

printf("str1 is %s\n", str);

printf("str2 is %x\n", &str);

getchar();

return 0;

}

代碼2及其運行結果

代碼3機器運行結果

#include

typedef struct

{

int a_;

int b_;

}test_;

void test(test_* str)

{

int a = str->a_;

int b = str->b_;

printf("a is %d, b is %d\n");

}

int main()

{

test(NULL);

getchar();

return 0;

}

總結

以上是生活随笔為你收集整理的c语言分段错误空指针,C语言空指针总结 - 祂的小哥哥的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。