【发布时间】:2014-07-07 11:31:06
【问题描述】:
我尝试搜索相同的问题,但没有人帮助我。当我运行程序时,我收到“发生缓冲区溢出...”错误。
构造:
Player(char* n)
{
length = strlen(n);
name = new char[length+1];
for(unsigned int i(0); i < length; i++)
name[i] = n[i];
name[length] = '\0';
}
目标:
~Player(void)
{
delete [] name;
}
我有 NULL 终止的字符串并且没有超出范围,有什么问题?
【问题讨论】:
-
班级是否遵循Rule of Three?如果没有,您很有可能会两次删除同一个缓冲区。使用
std::string为您正确管理动态内存,除非您特别想练习指针杂耍技巧。 -
你怎么知道是这个特定的代码导致了问题?
-
相关:Rule of five
-
@MikeSeymour:我还是有点慢。你当然是对的。
标签: c++ string char buffer delete-operator