由于某种原因,我的toCheck变量的值被删除了,我不明白为什么。有什么建议吗?
bool
check(string toCheck){
printf("toCheck: %s\n", toCheck.c_str());
ifstream list;
list.open("list.txt");
string temp;
while(list){
getline(list,temp);
printf("toCheck: '%s' temp: '%s'\n",toCheck.c_str(), temp.c_str());
if(temp == toCheck){
printf("Username exists\n");
return false;
}
}
printf("returning true\n");
return true;
}
以下是传递的内容:TestTrevor
这是输出:
toCheck: TestTrevor toCheck: '' temp: 'Trevor' toCheck: '' temp: '' Username exists
答案 0 :(得分:4)
来自您的评论:
调试真的很难(这就是我使用
printf
的原因),因为我正在分析并使用进程(这是我正在工作的VoIP项目的服务器当我试图遵循子进程时,gdb没有工作。
强调我的。
如果为toCheck
动态分配的内存从未真正进入分叉进程,或者以某种方式被丢弃/覆盖,我不会感到惊讶。
新信息:如果我发表评论
getLine(list, temp);
,那么它不会删除toCheck
,有什么想法吗?
这是您的程序中第一次需要std::allocator
来实际分配内存。
STL从来没有考虑过分叉,所以它完全可能只是在这个用例中不起作用。
您可以查看调试器发生了什么。查看分配toCheck
内存的地址以及为temp
分配内存时会发生什么,但这是深潜。
由于您似乎遇到了gdb问题,您可以先尝试转储地址(printf("%x", &toCheck[0]);
)。