正如標題所示,我試圖將值插入到對象指針的字符串中。C++:在對象指針中爲字符串賦值時的第一次機會異常
在我的頭,我的目標看起來如下:(它在處理與好奇建模文件和目錄系統分配)
typedef struct d_tree
{
std::string name;
d_tree *parent;
std::vector<d_tree> dirs;
std::vector<t_file> files;
} tree_node;
對於我的簡單起見,我使用字符串和向量(避免焦炭的細微差別*和雙指針數組)現在
,該目錄樹的頭,我有我的資料來源:
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變量在值列中有一個值。
父變量也似乎很奇怪,但我不會擔心它只是還沒有(特別是爲我做它NULL,反正..)
如何緩解這個問題任何意見(最好保持字符串,但可以理解,如果沒有光滑的解決方案存在)非常感激。
而且一般來說,你會很難找到一種情況,在C++中'malloc'會比'new'更受歡迎。 –
這似乎解決了這個問題。謝謝! –