#include <bits/stdc++.h>
using namespace std;
struct node
{
std::string a;
};
int main()
{
cout << str << endl;
struct node* p = (struct node*)(malloc(sizeof(struct node)));
p->a = "a";
cout << p->a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生运行时错误。该结构适用于整数,但是当我尝试使用字符串作为其成员变量时,会发生错误。它还会在代码cheide上给出运行时错误。
不要使用malloc
:构造函数用于std::string
将不会被调用,所以产生将处于不确定状态的对象。
使用new
来代替。然后,C++ 运行时将调用该std::string
成员的默认构造函数。不要忘记将new
与 a匹配delete
。
C ++不是C。
你不应该#include
从bits
文件夹中获取。
您不应该malloc
用来分配内存。您应该new
改用:
node* p = new node();
Run Code Online (Sandbox Code Playgroud)
或者只是根本不动态分配内存:
node p;
Run Code Online (Sandbox Code Playgroud)
C ++不是C。