我正在尝试将字符串变量的值分配给结构的另一个字符串变量。但是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()曾经存在,并且始终使用newdelete

关于c++ - 如何在C++中将字符串变量的值分配给结构的字符串变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40966661/

10-12 16:22