免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: hcq0411
打印 上一主题 下一主题

怎么样让malloc()失败 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-11-17 22:45 |只看该作者
lz是不是做集成测试啊?单元测试上面的方法都可能,集成的话估计只能用压力了,外部程序没办法干预malloc().

论坛徽章:
0
32 [报告]
发表于 2008-11-17 23:34 |只看该作者
把内存全消耗,就没有了!!
呵呵..

论坛徽章:
0
33 [报告]
发表于 2008-11-19 00:14 |只看该作者
1. 如果你事先定义了自己的函数或者宏来包装 malloc(),并在程序中坚持使用你的包装函数,那么恭喜你,稍微改动一下你的包装,可以很容易地到达你的返回 NULL 的目的。

2. 如果你使用的是 GNU C 库,它提供了方便修改 malloc() 行为的钩子机制:
http://www.gnu.org/software/libt ... oks-for-Malloc.html

3. 如果你是 Unix/Linux 平台,你可以写一个包含自定义的 malloc() 函数的共享库,然后在环境变量 LD_PRELOAD 中指定你的共享库,再执行你的程序,则会优先使用自己库中提供的 malloc() 函数。另外一种方式就是使用 dlsym()。

如果是 Windows 平台,好像有 detours 可以解决这个问题。

4. 其它。

论坛徽章:
0
34 [报告]
发表于 2008-11-19 14:15 |只看该作者
当内存空间不够的时候, malloc函数会调用失败的

论坛徽章:
0
35 [报告]
发表于 2008-11-19 14:48 |只看该作者
不停的malloc,直到所有的内存被占用

论坛徽章:
0
36 [报告]
发表于 2008-11-19 14:53 |只看该作者
原帖由 whyglinux 于 2008-11-19 00:14 发表
1. 如果你事先定义了自己的函数或者宏来包装 malloc(),并在程序中坚持使用你的包装函数,那么恭喜你,稍微改动一下你的包装,可以很容易地到达你的返回 NULL 的目的。

2. 如果你使用的是 GNU C 库,它提供了 ...


要这么复杂?

打桩不能解决LZ的问题吗,不就是对malloc做个单元测试嘛。

论坛徽章:
0
37 [报告]
发表于 2008-11-19 15:00 |只看该作者
用GDB跟踪吧,直接修改变量值

论坛徽章:
0
38 [报告]
发表于 2008-11-22 09:29 |只看该作者
malloc(-1)就会出错了。

论坛徽章:
0
39 [报告]
发表于 2008-11-22 11:39 |只看该作者
原帖由 年轻的大SB 于 2008-11-22 09:29 发表
malloc(-1)就会出错了。


LS的ID好晃眼

论坛徽章:
0
40 [报告]
发表于 2008-11-22 23:06 |只看该作者
怎么会这样呢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP