生命游戏提供的原CreateList函数好像有问题!

AutumnSky 2008-01-21 12:59:02
void CreateList(List *list)
{
list = new List;
list->count = 0;
list->entry = NULL;
}
应该写成:
void CreateList(List *&list)
{
list = new List;
list->count = 0;
list->entry = NULL;
}
对于原来的函数,在里面申请了List,修改了list值,使其指向新生成的List对象/内存空间;但对于外部而言,实参的值并没有被改变。欲获得申请到的内存空间,应该使用指针的引用。
奇怪的是,大赛提供的代码也能正常运行,不知为何?
...全文
213 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kelkch 2008-01-23
  • 打赏
  • 举报
回复
恐怕是特地弄出来考人的. :)
Leonard2008 2008-01-22
  • 打赏
  • 举报
回复
CreateList()没有问题.实参List*是指针,即地址,这个地址在CreateList被修改,在ClearList()中被释放。如果是这样的话,就有问题了
List* CreateList(...)
{
}
AutumnSky 2008-01-21
  • 打赏
  • 举报
回复
恩,谢谢了。
angel0514 2008-01-21
  • 打赏
  • 举报
回复
看了下,的确有问题,申请的空间没有返回,产生内存泄漏。
因为用CreateList创建的List在使用之前就已经分配了空间(见程序的第8行),所以还可以正常运行。

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧