首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#malloc

malloc和calloc之间的区别?

秋之夕颜清念念不忘,必有回响
一个经常被忽视的优点calloc是它将有助于免受整数溢出漏洞的攻击。比如: size_t count = get_int32(file); struct foo *bar = malloc(count * sizeof *bar); 与 size_t count = get_int32(file); struct foo *bar = calloc(count, sizeof *bar); 前者可能会导致一个微小的分配不当导致缓冲区溢出,如果count大于SIZE_MAX/sizeof *bar。后者将在这种情况下自动失败,因为大的对象不能被创建。 当然,,这些实现只是忽略了溢出的可能性。如果这是你的程序有这么一个问题,那么你必须对溢出进行手动测试。... 展开详请
领券