我正在尝试将字符串变量的值分配给结构的另一个字符串变量。但是gdb给出了运行时错误。错误如下:
程序收到信号SIGSEGV,分段故障。
0xb7f7c8f8 in std :: string :: assign(std :: string const&)()
来自/usr/lib/i386-linux-gnu/libstdc++.so.6
我的C ++程序是:
#include<iostream>
#include<stdlib.h>
#include<string>
typedef long unsigned int LUI;
using namespace std;
struct graph {
string string_node;
LUI node;
struct graph *link;
};
struct graph *abc[30];
struct graph *t;
string x;
int main() {
t = (struct graph *) malloc(sizeof(struct graph *));
x = "abc";
t->string_node = x;
t->link = NULL;
abc[0] = t;
cout << "Value is " << abc[0]->string_node << endl;
cout << "end";
return 0;
}
请帮助我将x的值存储到t-> string_node中。提前致谢..
最佳答案
t = (struct graph *) malloc(sizeof(struct graph *));
graph
是一类。它包含C ++类,尤其是包含std::string
。必须使用
new
运算符在动态范围内构造所有C ++类。它们不能用C库函数malloc()
构造,该函数对C ++类一无所知。这样做会导致未定义的行为(更不用说您的malloc-ed大小是错误的)。现在,您正在编写C ++代码,您需要完全忘记
malloc()
,realloc()
和free()
曾经存在,并且始终使用new
和delete
。关于c++ - 如何在C++中将字符串变量的值分配给结构的字符串变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40966661/