Re: [語法] 分配記憶體給vector裡面的struct裡面的 …

看板C_and_CPP (C/C++)作者 (壓力大)時間16年前 (2010/04/17 21:18), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串2/2 (看更多)
類似的問題@@(抱歉佔用板面) struct Signal { char *SignalName; vector<char*> CoresbondingGate; }; Signal *tempSignal; tempSignal=(Signal*)malloc(sizeof(Signal)); //囧 tempSignal->SignalName=tempG; vector<Signal*> SignalData; SignalData.push_back(tempSignal); SignalData[0]->CoresbondingGate.push_back(tempG); 一樣是compile過了 但是程式執行到此就當掉了Q__Q 我的疑問是 在囧那行就有分配記憶體給tempSignal 並且之後有存進SignalData[0] 卻還是沒辦法用SignalData[0]裡面的vector 不知道是語法問題 還是觀念問題 請問是甚麼原因呢?? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.201.226

04/17 21:19, , 1F
ps. tempG 為一已知字串
04/17 21:19, 1F
※ 編輯: lO 來自: 140.113.201.226 (04/17 21:23)

04/17 21:43, , 2F
因為你是用 malloc 來配置記憶體, 並不是用new, 所以
04/17 21:43, 2F

04/17 21:44, , 3F
CoresbondingGate 的建構式並沒有被呼叫, 不算完整的
04/17 21:44, 3F

04/17 21:44, , 4F
物件
04/17 21:44, 4F

04/17 21:48, , 5F
是喔@@
04/17 21:48, 5F
printf("%s",SignalData[SignalDataNumber]->CoresbondingGate[0]); 可是這樣有初始值耶 這樣不就代表他有位置嗎? ※ 編輯: lO 來自: 140.113.201.226 (04/17 21:49)

04/17 21:51, , 6F
關鍵是「CoresbondingGate 的建構式並沒有被呼叫」
04/17 21:51, 6F

04/17 21:51, , 7F
像 vector 這種東西都需要用建構式初始化之後才能用
04/17 21:51, 7F

04/17 21:58, , 8F
1. Signal *tempSignal = new Signal; //囧
04/17 21:58, 8F

04/17 21:58, , 9F
2. Signal *tempSignal = &Signal(); //囧
04/17 21:58, 9F

04/17 21:59, , 10F
兩個方法 自選吧...
04/17 21:59, 10F

04/17 22:01, , 11F
解決了 感謝大家 第一次接觸vector有點懵懵懂懂= =
04/17 22:01, 11F

04/18 00:54, , 12F
嚴格來說,和 vector 無關
04/18 00:54, 12F
文章代碼(AID): #1BoRKX7i (C_and_CPP)
文章代碼(AID): #1BoRKX7i (C_and_CPP)