加载中…
  
博文
标签:

it

分类: 工作

    近期我们开发的一个工具在调用c++ sort函数对数组进行排序时居然会导致进程崩溃,此问题细节我觉得对于类似我这种不常用stl的同学可能不容易觉察,这里简单总结下。

出错代码

因为代码太复杂不好展示,我这里就用下面这个简单的示例来描述。

http://s3/middle/532f6e8fgcb82b2c8db02&690

不知你是否直觉上也会觉得这段代码没什么问题,但是这段代码运行后会core dump。查看core文件可以看到内存里的栈被写坏了,这说明sort调用导致了内存越界访问,在这么少的代码行下,不难判定应该是comp函数实现可能不符合c++标准库的某种规则(C++ STL是基于concept的设计和实现)。

comp函数应该怎么写

带着这个疑问我去查了下c++ stl手册(

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有