看板 Programming 關於我們 聯絡資訊
小的程式是要建一顆Tree 但是children數是動態的 於是小的想設計一Linking List叫children 包在叫TreeNode的Object裡面 裡面有TreeNode*和children* 要讀的時候就掃這個List 終止條件為->next=NULL 於是小的都會先把next assign成NULL 當有東西(string)進來時 再new children 我想請問一下 設成NULL再new會不會有問題呢? 因為我在debug發現很莫名的現象 就是在建Tree時 新增下面的leafnode時 莫名其妙Root的data也一起被改掉了= = 可是那時pointer並沒有指向Root= = 而且每次重開程式狀況都不大一樣= = 不知道是不是記憶體上的問題 麻煩各位了 喔對了 我是用Turbo C= = 因為CodeBlock 的debug我一直不太會用(按continue它就說debugger中止 設breakpoint也沒用= =) Dev-c則說我有segmentation fault 不知道是不是因為這樣呢? 問題有點弱 請多多包涵> < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.74.142
cgcheng:list在c++現成可用,c的話好像要先malloc? 61.229.216.62 08/27 00:50
cgcheng:程式要不要先列出來一下? 61.229.216.62 08/27 00:52
cgcheng:也可以用valgrind測試一下 61.229.216.62 08/27 01:07
SmallBeeWayn:有沒有可能是初值問題?122.116.180.163 08/27 01:45
cgcheng:看有沒有core file之類的,backtrace 61.229.234.235 08/29 13:48
t1.root=new TreeNode; strcpy(t1.root->data,clause); q1=&(t1.root->children); q1=&那行似乎有問題 這樣寫有什麼問題嗎 謝謝各位 struct childchain { TreeNode* child; childchain* next; }; class TreeNode { friend class Tree; public: childchain children; int vocabnum; char *data; }; ※ 編輯: ok456 來自: 61.62.94.142 (08/29 19:08)
james732:你的q1是什麼型態? 140.117.171.46 08/29 20:36
ok456:childchain* 61.62.94.142 08/29 21:17
loveme00835:t1.root->data 有沒有配置空間? 沒配140.121.197.115 08/29 21:41
loveme00835:用strcpy一定炸140.121.197.115 08/29 21:41
ok456:阿= =new TreeNode還不夠對吧? 61.62.94.142 08/29 22:03
ok456:還要讓data去new是嗎? 61.62.94.142 08/29 22:03
loveme00835:當然阿= =140.121.197.115 08/29 22:06
ok456:非常感謝 61.62.94.142 08/29 22:08
darkgerm:如果寫char data[100];是不是就不用new了 124.8.140.3 08/29 22:08
loveme00835:是阿, 只不過這樣節點佔的空間會很大140.121.197.115 08/29 22:13