- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
3天前关闭。
Improve this question
structure struct_ppl{
char* name;
int age;
}people;
void incription(struct_ppl* ppl)
{
ppl->name = new char[10];
...//some codes, but we do not delete ppl->name
}
int main()
{
people new_ppl;
inscription(&new_ppl);
... //some codes
1. delete(&new_ppl.name);
2. delete(new_ppl.name);
}
在上面的代码中,哪一个删除指针是正确的,1。或2。?或两者都不?谢谢你的提示
3条答案
按热度按时间ulydmbyx1#
使用std::string和成员函数
jdgnovmf2#
哪一个删除指针是正确的,1.或2.?还是两者都不删除?
两者都不是,您应该并且必须在从
new[]
分配时使用delete[]
。请注意,代码可能会发生内存泄漏,如果多次调用
void incription(struct_ppl* ppl)
而没有“释放”并销毁以前分配的char* name
,则会泄漏char* name
。lrl1mhuk3#
哪一个删除指针是正确的,1.或2.?还是两者都不删除?
两者都不是,因为您正在使用
new[]
表单动态分配内存,所以您必须使用delete[]
表单的相应释放函数。