我编写了一个程序,它有一个应该从命令行参数复制字符串的类。
这是有问题的代码。
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 终止的,所以这个代码块会查找一个 NULL 字符来查找字符串的长度,然后再将它的 memcpy'ing 到一些新的内存空间中。
我忽略了什么?或者这段代码应该“正常工作”吗?
谢谢
编辑:
strcpy 有错吗?如果命令 arg 不是 NULL 终止的,它是否会沿着一段内存运行,直到导致访问冲突?