其实昨天开发pds,就碰到了core,我还以为是内存不够的问题,或者其他问题。

今天把所有代码挪到了as这里,没想到又出core了。

根据直觉,我就觉得可能是std::sort这边的问题。

上网一搜,果然很多提到了这个问题。

原来 std::sort调用的方法,在相同元素这里,不能够返回true.

因为

std::sort()的排序分2种,当元素个数>16(_S_threshold)时选择快速排序,<=16个则选择插入排序(对象少时快排性能不理想)。按照快排原理,每次都是遍历所有值和一个中间值比较,小的放左边,大的放右边。从下面STL源代码可看出,std::sort()在遍历比较时,是没有边界保护的。如果比较相等的元素返回真,则在极端情况下(如所有元素相等,__pivot为最小|最大值时)会出现访问越界,导致coredump

/// This is a helper function...template<typename _RandomAccessIterator, typename _Tp, typename _Compare>_RandomAccessIterator__unguarded_partition(_RandomAccessIterator __first,_RandomAccessIterator __last,_Tp __pivot, _Compare __comp){while (true){while (__comp(*__first, __pivot))++__first;--__last;while (__comp(__pivot, *__last))--__last;if (!(__first < __last))return __first;std::iter_swap(__first, __last);++__first;}}

参考:

http://blog.csdn.net/yyyiran/article/details/38797237

http://blog.csdn.net/stpeace/article/details/52202341

函数中使用的是
while (__comp(*__first, __pivot))++__first;如果当比较元素相同返回真时,此时比较元素将会继续向下遍历,在极端情况下,例如程序中所有元素都是一样的情况下,在这种情况下,就会出现访问越界,结果就是导致程序出现segment fault

今天遇到的一个诡异的core和解决 std::sort相关推荐

  1. 一个诡异的问题的解决20211008

    近期一名同事发现了一个业务接口存在插入重复数据的问题,让我帮忙一起解决下,解决完了后感觉此问题有点意义,分享给大家. 接口功能 从OA系统下载报销单(报销单+报销明细+发票明细),存入ERP系统的费用 ...

  2. 树莓派3代刷ubuntu mate在命令行下配置wifi不能连接的一个诡异的bug的解决

    家里路由器不在自己卧室,用树莓派考虑用wifi,之前用Raspberry官方系统,按照教程写的wpa.conf可以连接wifi,后来重新刷ubuntu mate 16.04就不好用了 各种找原因,后来 ...

  3. 一个完整的Core Data应用

    在这篇文章中,我们将建立一个小型但却全面支持Core Data的应用.应用允许你创建嵌套的列表:每个列表的item都可以有子列表,这将允许你创建非常深层次的item.为了让大家完整的了解发生了什么,我 ...

  4. Dora.Interception: 一个为.NET Core度身定制的AOP框架

    多年从事框架设计开发使我有了一种强迫症,那就是见不得一个应用里频繁地出现重复的代码.之前经常Review别人的代码,一看到这样的程序,我就会想如何将这些重复的代码写在一个地方,然后采用"注入 ...

  5. Kubernetes初探[1]:部署你的第一个ASP.NET Core应用到k8s集群

    Kubernetes简介 Kubernetes是Google基于Borg开源的容器编排调度引擎,作为CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的 ...

  6. 如何一秒钟从头构建一个 ASP.NET Core 中间件

    前言 其实地上本没有路,走的人多了,也便成了路. -- 鲁迅 就像上面鲁迅说的那样,其实在我们开发中间件的过程中,微软并没有制定一些策略或者文档来约束你如何编写一个中间件程序, 但是其中却存在者一些最 ...

  7. 一个诡异的可见性问题

    转载自 一个诡异的"可见性"问题 之前介绍过可见性的特性,最近做测试的时候发现了一个很诡异的问题,下面看看这三个例子. test1: test1这个例子加了volatile,所以程 ...

  8. Struts2一个诡异问题的解决

    项目中使用Struts2..像很多问题一样,刚开始出现的时候,觉得很诡异,难以入手:解决掉之后,就知道其实很简单了. 前几天遇到一个问题,在某Action类中定义了一个名为success的字符串变量, ...

  9. 在使用谷歌时发现一个诡异问题cookie传不过去

    在使用谷歌时发现一个诡异问题cookie传不过去 查找相关资料发现这是谷歌的一个新属性SameSite导致的, SameSite 属性 Cookie 的SameSite属性用来限制第三方 Cookie ...

  10. 一个基于.Net Core 开源的物联网基础平台

    在智慧工厂领域,智慧城市领域,都需要对设备进行监控.比如工厂需要对周围环境温度.湿度.气压.电压,灯的开关进行监控.这时候就需要物联网平台来进行管理. 在智慧工厂领域,宝马集团通过英伟达的Omnive ...

最新文章

  1. 简单介绍基于PostgreSql 别名区分大小写的问题
  2. Python操作数据库之 MySQL
  3. php基础标签大全,HTML基础之HTML常用标签
  4. 动手开发第一个 Cypress 测试应用
  5. 【C语言】创建一个函数,利用该函数将字符串中的小写字母转换为大写字母
  6. Linux 中设置环境变量的三种方法
  7. 再学 GDI+[16]: GDI+ 的颜色常量表
  8. Oracle收购后的Mysql目标市场
  9. linux的特殊符号与正则表达式
  10. JSP中使用的模式——JSP+Servlet+JavaBean
  11. Java 集合源码分析
  12. OTO电子商务商业模式探析
  13. Putty 设置前景色和背景色
  14. mybatis第十话 - mybaits整个事务流程的源码分析
  15. ALV清缓存_SAP刘梦_新浪博客
  16. Elixir-List
  17. Java的发展前景与就业趋势如何?
  18. si4463突破最大包64字节发送
  19. 黄山学院计算机科学与技术怎么样,黄山学院计算机科学与技术专业在那个校区...
  20. swagger:快速入门

热门文章

  1. PHP基础知识------页面静态化
  2. 自己了解的一些信安的工具清单
  3. javascript焦点图自动播放
  4. 环信即时通讯在工程中的安装——Nusen_Liu
  5. 11th Iran Nationwide Internet Contest 解题报告
  6. Asp.Net MVC4 Bundle捆绑压缩技术
  7. SSAS事实表和维度表数据类型必须一致
  8. javascript 3月17日
  9. Django中的templates(你的HTML页面放哪里)
  10. AVRNET 学习笔记UDP部分