51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2220|回复: 7
打印 上一主题 下一主题

[讨论] 请教对于内存分配释放问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-6-11 13:42:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有一个问题一直困扰着我:就是关于形参是结构体指针的问题。
例如:    int funa (struct TIMER_STRUCT *p )
          {
                int ret;
                ret=p.data;                        
                return ret;
           }

testcase: void test_funa( void )
              {
                     struct TIMER_STRUCT *p;
                     p=(struct TIMER_STRUCT *) malloc(sizeof(struct TIMER_STRUCT));
                     p.data=5;
                     CU_ASSERT(5==funa(p));
                     free (p);
               }

其中,mallocfree这两条语句能否省略?概念不明白,呵呵
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-6-11 16:57:08 | 只看该作者
我们的口号是:能省者省,能测者测!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-6-12 08:40:48 | 只看该作者
可好像分配空间和释放不能省略吧?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-6-12 09:56:56 | 只看该作者
沉默~~~~~~~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-6-12 10:02:16 | 只看该作者

回复 #1 liulinzhu 的帖子

楼主做单元测试的啊,向你学习!
你是开发人员还是测试人员啊?
我觉得还是要分配和释放的.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-6-12 10:12:23 | 只看该作者

回复 #5 ppent 的帖子

我是公司所谓的测试人员,做单元测试是主要给前阶段开发人员遗留下来的一些代码给补充测试,
没办法啊。
向我学习就谈不上了,我也是新手,我们一起讨论一起进步!
我也是觉得不能省略的。sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-6-14 13:16:45 | 只看该作者
1.如果你定义p 为指针类型就不能省略的,因为struct TIMER_STRUCT *p;只是初始化了一个指针,而没有指向任何地方,malloc就是分配一块内存地址给这个指针来指向它,然后再对这个指针指向的内容进行操作。最后操作结束就释放(free),如果不释放就是内存泄漏了。 另外你这里有个小问题,因为p是指针,给它里面的变量付值的时候应该用 p->data=5;
2.这里也可以不定义p为指针类型,直接
struct TIMER_STRUCT p;
然后就不需要分配地址给它,就不需要malloc和free了,然后传递给函数的时候使用它的地址:
CU_ASSERT(5==funa(&p));
就可以了。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-6-14 13:30:53 | 只看该作者

回复 #7 xiaocuier 的帖子

感谢xiaocuier
sdlkfj3
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 16:52 , Processed in 0.074980 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表