试图通过struct时C 代码崩溃

C++ code crashing when trying to pass struct

本文关键字:代码 崩溃 struct      更新时间:2023-10-16

我有这个结构:

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

如果您需要变量具有动态存储持续时间,请改用newdelete。简而言之,malloc Will 调用任何构造函数,而new则将。std::string构造函数未被称为崩溃的原因。

在许多情况下,自动存储持续时间就足够了,您可以简单地写:

dat foo;

并通过引用将该实例传递给您的函数。