[問題] 這樣算 dangling pointer 嗎?

看板C_and_CPP作者 (Neisseria)時間9年前 (2016/12/15 16:58), 9年前編輯推噓1(105)
留言6則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Debian GNU/Linux 和 OS X 10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Linux: gcc v4.9.2 OS X: clang-703.0.31 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我寫了一個本來以為會 segmentation fault 的程式 卻正確地指向特定的資料 餵入的資料(Input):預期的正確結果(Expected Output): segmentation fault 錯誤結果(Wrong Output): 得到值 16 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> int main() { const int SIZE = 10; int* a = (int*) malloc(SIZE * sizeof(int)); int* a1 = a; for (int i = 0; i < SIZE; i++) { int j = i + 1; a[i] = j * j; } free(a); a = NULL; printf("%d\n", a1[3]); // segmentation fault if accessing a // printf("%d\n", a[3]); return 0; } 補充說明(Supplement): 感謝 C/C++ 版 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.36.79 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481792305.A.9F0.html

12/15 17:10, , 1F
這樣算 dangling pointer 沒錯
12/15 17:10, 1F

12/15 17:11, , 2F
但並不保證這樣做會引發 segmentation fault 啊
12/15 17:11, 2F

12/15 17:25, , 3F
12/15 17:25, 3F

12/15 23:55, , 4F
當然是 dangling pointer
12/15 23:55, 4F

12/16 06:36, , 5F
是hurry potter
12/16 06:36, 5F

12/16 06:56, , 6F
是無預期行為 但不代表一定會掛掉
12/16 06:56, 6F
感謝樓上各位大大 小弟最近在寫一些範例程式 想寫一個 dangling pointer 的例子,就寫了以上的例子 沒想到竟然跑得動,我還以為我搞錯了 C/C++ 板惠我良多 ※ 編輯: Neisseria (1.171.134.251), 12/16/2016 10:01:26
文章代碼(AID): #1OKbindm (C_and_CPP)