stack_chk_fail 错误的一种案例

今天程序运行debug模式没问题,切换到release模式发现程序突然崩溃了,查看了一下崩溃的调用栈信息,显示stack_chk_fail。网上查询了一下,该错误是由于越界导致的调用栈地址错误,从而出现crash,详细讲解可以参看这位同学的解释:

https://blog.csdn.net/zengyubao1/article/details/51597654

我简单说下我自己犯错的情况,便于为通道中人排查问题时提供灵感,哈哈,其实是一个非常低级的错误,且听如下:

一个对象,开辟空间,其中有几个字节存储对象指针,赋值的时候用的sizeof取指针大小,取值的时候,直接用8认为是指针的存储空间大小,其实有计算机基础知识的人都知道,4是64位操作系统下的指针存储空间,32位操作系统就不是了,因此造成了获取指针内容使用memcpy内容越界,从而引起程序报错。debug模式可能有多余的开辟空间或者没有这么严格的检验机制,具体原因不太得而知了,了解这方面知识点的人不介意的话可以在下面评论指点一二,感激不尽。

写下此文给自己记录一下,防止下次再犯吧,有其他技术方面想交流的,也欢迎大家积极留言,写程序简直是枯燥,写点东西还是可以稍微缓解缓解的,还有就是排查问题,一直没有进展,很让人郁闷,盯着屏幕看呀看的。

你可能感兴趣的:(stack_chk_fail 错误的一种案例)