<分区>
我有这个结构:
struct dat {
std::string name;
};
当运行下面的代码时,我的程序崩溃了:
dat* x = (struct dat*)malloc(sizeof(struct dat));
x->name = str;
g_signal_connect (button, "clicked", G_CALLBACK (func), &x);
<分区>
我有这个结构:
struct dat {
std::string name;
};
当运行下面的代码时,我的程序崩溃了:
dat* x = (struct dat*)malloc(sizeof(struct dat));
x->name = str;
g_signal_connect (button, "clicked", G_CALLBACK (func), &x);
最佳答案
不要在 C++ 中使用 malloc
。
如果您需要一个变量具有动态存储持续时间,请改用new
和delete
。简而言之,malloc
将不 调用任何构造函数,而new
会。 std::string
构造函数未被调用的事实可能是导致崩溃的原因。
但在许多情况下,自动存储持续时间就足够了,您可以简单地写:
dat foo;
并将该实例通过引用传递给您的函数。
关于尝试传递结构时 C++ 代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765156/