#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;
}
上面的代码会产生运行时错误。结构正在用于int但是当我尝试使用string作为其成员变量时,会发生错误。它还在codechef ide上提供运行时错误。
答案 0 :(得分:4)
不要使用malloc
:std::string
的构造函数将不被调用,因此创建的对象将处于未定义状态。
请改用new
。然后,C ++运行时将调用std::string
成员的默认构造函数。不要忘记将new
与delete
匹配。
答案 1 :(得分:4)
C ++不是C。
您不应该#include
文件夹bits
中的任何内容。
您不应该使用malloc
来分配内存。您应该使用new
代替:
node* p = new node();
或者根本不动态分配内存:
node p;
C ++不是C。
答案 2 :(得分:2)
您忘记声明str
。另外,除非你必须(读:永远),否则不要使用new
(和当然不是malloc !!!):
#include <iostream>
#include <string>
using namespace std;
struct node {
std::string a;
};
int main()
{
std::string str;
cout << str << endl;
node p;
p.a = "a";
cout << p.a;
}