为了账号安全,请及时绑定邮箱和手机立即绑定

当malloc()-相同结构时如何在结构中使用C ++字符串?

当malloc()-相同结构时如何在结构中使用C ++字符串?

C++
芜湖不芜 2019-09-26 10:17:28
我编写了以下示例程序,但由于segfault崩溃。问题似乎与在结构中使用malloc和std::strings有关。#include <iostream>#include <string>#include <cstdlib>struct example {  std::string data;};int main() {  example *ex = (example *)malloc(sizeof(*ex));  ex->data = "hello world";  std::cout << ex->data << std::endl;}我不知道如何使它工作。有什么想法甚至可以使用malloc()和std::strings吗?谢谢,博达·西多(Boda Cydo)。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

malloc在C ++中,您不能使用具有非平凡构造函数的类。您得到的malloc是一块原始内存,其中不包含正确构造的对象。任何尝试将该内存用作“真实”对象的尝试都会失败。

代替malloc-ing对象,使用new

example *ex = new example;

malloc通过使用以下步骤序列,也可以强制您的原始代码使用:malloc首先是原始内存,然后是在该原始内存中构造对象:

void *ex_raw = malloc(sizeof(example));example *ex = new(ex_raw) example;

new上面使用的形式称为“新放置”。但是,您的情况并不需要所有这些技巧。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 467 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信