我有一个while循环,其目的是构建一个包含可用DLL列表的数组。
do{
DLL_List.push_back((char*)FindFileData.cFileName);
cout << "DLL 0 IS" << DLL_List[0];
}
while (FindNextFile(hFind, &FindFileData));
问题:DLL_List [0]的值在每次迭代时都会发生变化(使用新找到的DLL文件的名称)!我可以通过cout看到它。为什么?我以为push_back不会修改之前的,我错了吗?
答案 0 :(得分:3)
看起来你正在存储一个指向一个字符串的指针,当你调用FindNextFile
时它会发生变化(尽管你忘了告诉我们DLL_List
到底是什么,所以我不能完全确定)
存储std::string
。这将保留字符串的副本,而不仅仅是指向它的指针。