在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  C++/ malloc函數(shù) 獲取到的指針無法使用?

malloc函數(shù) 獲取到的指針無法使用?

clipboard.png

Node 是一個(gè)結(jié)構(gòu)體定義,

struct Node {
    
    string v;

} ;

通過malloc函數(shù) 在堆中創(chuàng)建一個(gè)結(jié)構(gòu)體, 返回指針,將指針賦值給 pNode,為什么執(zhí)行 pNode->v=pre.substr 會(huì)出現(xiàn)錯(cuò)誤??

26行報(bào)錯(cuò)。
回答
編輯回答
喵小咪

問題已經(jīng)解決

結(jié)構(gòu)體中定義的是 string 類型,string 的長度可以是 3 或者6 任意長度,導(dǎo)致結(jié)構(gòu)體占用空間大小不確定。

2017年9月27日 12:44
編輯回答
毀了心

題主自己回答的答案是有問題的,正確的構(gòu)造方式是使用placement new,原因并不是string大小不固定,而是string本身不是pod類型,是不可以直接構(gòu)造的。

Node* pNode;
void* raw=malloc(sizeof(Node));
pNode=new (raw) Node;
2017年2月21日 11:11