又是没有offer的一天呐 level
获赞
623
粉丝
5
关注
12
看过 TA
51
华中科技大学
2019
C++
IP属地:湖北
暂未填写个人简介
私信
关注
2018-07-21 10:33
已编辑
华中科技大学 C++
看到有人被问到这一题,但是网上查到的都说的不清不楚的
江沢直树:这个要从运行库的角度来说。微软和Linux平台的C运行库在早期均提供线程安全和线程不安全版本,区别就是效率上的一些差距。现在来说基本都是线程安全的运行库了,那么new在不重载空间分配器的前提下,它和malloc都是线程安全的,也就是说函数内部会对一些数据结构上锁。但它们是不可重入函数,非异步信号安全,即进程执行流正在malloc中,这时需要相应信号,在信号处理函数中再调用malloc,所以这个锁应该是递归锁。在malloc中改变了内存管理的数据,那么信号处理函数结束后,原来的malloc看到被改变的内存管理数据结构后会一脸懵逼,怎么一眼没找看到就变了,从而产生错误的结果
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务