[問題] struct內的指標記憶體釋放

看板C_and_CPP (C/C++)作者 (小勇)時間13年前 (2013/03/08 00:08), 編輯推噓4(409)
留言13則, 6人參與, 最新討論串1/1
程式碼: #include<stdio.h> #include<stdlib.h> #include<iostream> #include<Windows.h> using namespace std; typedef struct stest { LPSTR szStr; }test,*lptest; int main() { lptest a=new test; a->szStr=new CHAR[MAX_PATH]; wsprintf(a->szStr,"123"); lptest b=new test; b->szStr=a->szStr; delete a; cout<<b->szStr; system("pause"); } 預期結果: 記憶體錯誤 問題: 當我delete a的時候a的szStr是不是沒有跟著被釋放掉壓?? 如果是的話有沒有辦法在delete a的時候把裡面的指標一起釋放掉?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.61.160.43

03/08 00:11, , 1F
一個方式是自己寫個descructor
03/08 00:11, 1F

03/08 00:13, , 2F
destructor才對...筆誤
03/08 00:13, 2F

03/08 00:27, , 3F
請問一下什麼是destructor??
03/08 00:27, 3F

03/08 00:29, , 4F
struct也可以寫解構函式??
03/08 00:29, 4F

03/08 00:42, , 5F
自己寫func硬幹
03/08 00:42, 5F

03/08 00:58, , 6F
C++ 的 struct 可以放 dtor
03/08 00:58, 6F

03/08 02:01, , 7F
大概了解了 原來class和struct有大大的淵源= =
03/08 02:01, 7F

03/08 16:15, , 8F
既然是c++就不要用typedef這種寫法了
03/08 16:15, 8F

03/08 16:16, , 9F
直接寫struct test{}; 不過提醒一下別用test這命名
03/08 16:16, 9F

03/09 00:12, , 10F
c++ class === struct,除了預設權限class 是private
03/09 00:12, 10F

03/09 00:12, , 11F
struct 是public
03/09 00:12, 11F

03/09 01:32, , 12F
你new了裡面的東西  只delete外層結構當然不夠阿
03/09 01:32, 12F

03/09 01:32, , 13F
一個new一定要對到一個delete 可以寫在解構子裡
03/09 01:32, 13F
文章代碼(AID): #1HEBkDPX (C_and_CPP)
文章代碼(AID): #1HEBkDPX (C_and_CPP)