c++ - 关于STL的alloc
高洛峰
高洛峰 2017-04-17 13:03:20
[C++讨论组]
    template<int inst>
    void (*__malloc_alloc_template<inst>::set_malloc_handler(void(*f)()))()
    {
        void(*old)() = __malloc_alloc_oom_handler;
        __malloc_alloc_oom_handler = f;
        return (old);
    }

为什么是返回old?而不是返回__malloc_alloc_oom_handler ?

void (*__malloc_alloc_template<inst>::__malloc_alloc_oom_handler)() = 0;

在这里把__malloc_alloc_oom_handler设置为了0,那么在上面那个函数old的值不也为0吗?那么我调用这个返回的old就会出错呀,为什么这么做呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
PHPz

返回old是返回上一个alloc_handler,

__malloc_alloc_oom_handler = f;
这里都已经设置老的hanlder为新的f了,你再返回它有意义吗,好比你传入了一个参数,结果你这个函数的返回值还是还是这个参数,没有任何意义的。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号