正如标题所暗示的,我试图将一个值插入到对象指针的字符串中。
在我的标题中,我的对象如下所示:
typedef struct d_tree
{
std::string name;
d_tree *parent;
std::vector<d_tree> dirs;
std::vector<t_file> files;
} tree_node;
(这是一个为好奇的人处理建模文件和目录系统的任务。)为了简单起见,我使用字符串和向量(以避免 char * 和双指针数组的细微差别)
现在,对于这个目录树的头部,我的源代码中有:
tree_node *G = (tree_node *)malloc(sizeof(tree_node));
getline(dirs, dirp); //First should be main parent, or ./
G->name = dirp;
G->parent = NULL;
tree_node *top = G;
tree_node *curr = G;
分配运行良好,getline 仅用于读取我将使用的一些字符串数据......但是一旦我点击G->name = ...
,我的编译器(使用 VS 12)大喊:
" First-chance exception at 0x57AD11CE (msvcr110d.dll) in File_System.exe: 0xC0000005:
Access violation writing location 0xCDCDCDCD.
If there is a handler for this exception, the program may be safely continued. "
在抛出异常之前查看局部变量时,我注意到一些事情:G 中的 name 变量在 value 列中有一个。
父变量似乎也很奇怪,但我暂时不会担心它(尤其是因为我将其设为 NULL,无论如何..)
非常感谢有关如何缓解此问题的任何建议(最好保留字符串,但如果不存在平滑解决方案则可以理解)。