c++ - 试图制作一个包含字符串 C++ 的链表

标签 c++ string pointers linked-list

我目前正在研究一个链表,该链表将包含包含信息字符串的字符串。我正在使用一个看起来像这样的结构:

struct symbolTable
{
    string lexeme;
    string kind;
    string type;
    int offSet;
    symbolTable *nextSymbol;
    symbolTable *nextTable;
};

插入函数看起来有点像这样:

void MPParser::insertToSymbolTable(string identifier, string type, string kind)
{
    tempOffset++;
    symbolTable *tempNode;
    tempNode = (symbolTable*)malloc(sizeof(symbolTable));
    tempNode->kind = kind; //Run Time error Here..
    tempNode->type = type;
    tempNode->lexeme = identifier;
    tempNode->offSet = tempOffset;
    tempNode->nextTable = NULL;
    tempNode->nextSymbol = root;
    root = tempNode;
}

程序编译,然后当我尝试运行并插入链表时,我得到这个错误:

Unhandled exception at 0x5A6810D0 (msvcr110d.dll) in mpcompiler.exe: 0xC0000005: Access   violation writing location 0xCDCDCDCD.

在指针中将一个字符串分配给另一个字符串的正确方法是什么?还是我做错了什么?任何帮助,将不胜感激!

谢谢!

最佳答案

使用 new 而不是 malloc() 以便正确构造字符串对象:

tempNode = new symbolTable;

然后在需要释放节点时使用delete:

delete node;

关于c++ - 试图制作一个包含字符串 C++ 的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750087/

相关文章:

c++ - 试图从用户 C++ 输入的代码中删除注释

c++ - 没有匹配的调用函数

python - 将字符串转换为变量[python]

C++/'string' 未在此范围/错误中声明

c - 如何@synthesize C 风格的指针数组?

c++ - 编译 boost::math 的性能测试应用程序

c++ - 用 C++ 解析 <li> 列表

c# - 字符串搜索引擎 - 返回最佳结果?

c - Memset 指针错误

c - 当 realloc 缩小分配的 block 时,释放的内存在哪里?