下列 C++的部分程式碼,會產生何種問題? int *p1=new int; int *p2=new int; *p2 = 40; p1 = p2; delete p2;
A程式語法的錯誤
B資料型態不相容的錯誤
Cp1 是迷途指標(dangling pointer)正確答案
Dp2 是迷途指標(dangling pointer)
答案與詳解
p1=p2 後,p1 原本 new 的記憶體遺失(memory leak),且 p1 改指向 p2 的位址。delete p2 釋放該位址後,p1 仍指向已釋放記憶體,成為 dangling pointer。
