我寫了一個程序,它有一個類,它應該從命令行參數中複製一個字符串。在Linux上工作,在Windows 7上崩潰
這裏是有問題的一段代碼。
void FileHandler::SetFile(const char*& filename)
{
for(unsigned tsr = 0; tsr < 200; tsr ++){
if(filename[tsr] == 0x0){
mFilename = new char[tsr];
strcpy(mFilename, filename);
mFilenameAllocated = true;
}
}
}
我假定一個命令參數以NULL終止的,因此這個代碼塊尋找一個空字符找到字符串的長度,memcpy'ing成一些新的內存空間之前。
我忽略了什麼?還是應該這個代碼「只是工作」?
感謝
編輯:
是它的strcpy的錯嗎?如果命令參數不是NULL終止的,它是否會沿着一段內存運行,直到它導致訪問衝突?
如果這是C++,爲什麼這麼難?使用'std :: string'。 – chris
如果你的字符串少於200個字符,如果它不是以任何方式崩潰,你正在迭代字符串的末尾 –
是的,200是一個'瘋狂'的上限,永遠不會超過。 – user3728501