malloc函数 获取到的指针无法使用?

clipboard.png

Node 是一个结构体定义,

struct Node {
    
    string v;

} ;

通过malloc函数 在堆中创建一个结构体, 返回指针,将指针赋值给 pNode,为什么执行 pNode->v=pre.substr 会出现错误??

26行报错。
阅读 2.4k
2 个回答

题主自己回答的答案是有问题的,正确的构造方式是使用placement new,原因并不是string大小不固定,而是string本身不是pod类型,是不可以直接构造的。

Node* pNode;
void* raw=malloc(sizeof(Node));
pNode=new (raw) Node;

问题已经解决

结构体中定义的是 string 类型,string 的长度可以是 3 或者6 任意长度,导致结构体占用空间大小不确定。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题