__stack_chk_fail问题及解决方案
遇到的问题:
程序在进入ComputeMisc()函数后,执行到函数结尾的括号处出现如下错误:
*** stack smashing detected ***: < unknown > terminated
Signal: SIGABRT (Aborted)
调试窗口显示:__stack_chk_fail
在网上找资料,出现__stack_chk_fail是因为发生了栈溢出,引起栈溢出可能有:1)数组越界,2)sprintf()、memcpy()、strcpy()等函数,3)写入越界。
相关资料:现代Linux操作系统的栈溢出(上)
明确了是内存问题后,用sizeof()对数组中的结构体进行检查,在结构体的.h文件里,sizeof()输出是240。而在出现问题的函数里,sizeof()的结果是226。通过分析结构体的内容,猜测问题可能与结构体对齐有关。
结构体对齐相关资料:结构体对齐(图解)与位域
#pragma pack介绍
最后发现,其中一个#include的头文件里有#pragma pack(1)。
在所在的头文件结尾加上#pragma pack(),恢复默认对齐方式,问题得到解决。
结论是使用了#pragma pack(1)之后一定要记得恢复对齐方式,只要没有恢复就都处在#pragma pack的作用域中。
另外,修改之前的代码在Windows系统中可以正常运行,放到Linux里就会报错,可能是Linux对内存的管理更严格。
__stack_chk_fail问题及解决方案相关推荐
- mysql并发更新数据,多用户并发修改数据解决方案。
mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...
- Chrome不支持showModalDialog的解决方案
Chrome不支持showModalDialog的解决方案 昨天在使用showModalDialog的时候,遇到如下问题: 如果子窗口被刷新过,那么父窗口就接受不到子窗口的返回值. 为了解决这个问题, ...
- GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案
关于 GCC 提示找不到指定库文件的这个问题,通常出现在以下 2 个场景中: 利用静态库或者动态库文件实现链接操作(生成可执行文件)时,·GCC 可能会提示 xxx:No such file or d ...
- Docker使用遇到问题Got permission denied while trying to connect to the Docker daemon socket解决方案
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker. ...
- 【VS实践】VS解决方案中出现无法生成DLL文件
前言: 这几天在学习牛腩新闻发布系统,突然发现标准的过程原来是从D层倒着往U层敲,在敲的过程中,遇到了一个问题:D层生成的DLL文件,在B层和U层中使用不了! 从早上10:00~15:30,自己弄了好 ...
- Tomcat 1099端口占用重启无效,查不到进程,改换端口无效解决方案
不知道怎么的,突然Tomcat报错1099端口被占用 以下总结了网上可能有效的三种解决方案: 方案一对我来说无效,根本查找不到1099的进程 方案二对我来说也无效 方案三有效,关闭了hyper-v服务 ...
- 华为公有云架构解决方案
华为公有云架构解决方案 华为公有云架构 华为公有云的主要服务如弹性云服务器(ECS).弹性伸缩服务(AS).云硬盘 (EVS).云硬盘备份(VBS).对象存储服务(OBS) .虚拟私有云(VPC).弹 ...
- 半导体与智能汽车行业解决方案
半导体与智能汽车行业解决方案 EDA芯片仿真.IC验证.在线电路仿真:Cadence/Synopsys/Mentor软件加速. IC设计公司 帮助芯片代工厂进行Synopsys VCS,Synopsy ...
- 云端一体全栈解决方案
云端一体全栈解决方案 随着万物互联时代的来临,在终端设备方面,无论是单独部署的个人电脑,接入云平台的瘦客户端,还是其它通过有线和无线接入服务端的多样化设备,用户都呼唤终端设备有更高的性能,更好的用户体 ...
- NVIDIA DGX SUPERPOD 企业解决方案
NVIDIA DGX SUPERPOD 企业解决方案 实现大规模 AI 创新的捷径 NVIDIA DGX SuperPOD™ 企业解决方案是业界首个支持任何组织大规模实施 AI 的基础架构解决方案.这 ...
最新文章
- 腾讯AI Lab两大算法刷新人脸识别与检测纪录,秉承「基础研究+落地应用」之路
- java实现微信企业付款到银行卡_微信企业付款到银行卡实现方式 - 黎明互联-官方博客 - 黎明互联 - 区块链培训,PHP培训,IT培训,职业技能培训,追求极致!改变您的职业生涯!...
- 人脑细胞在培养皿中学会打游戏,比AI学习速度快18倍还省电,有黑客帝国那味了...
- struts2中拦截器和过滤器的比较
- CentOS 7 安装nginx
- 服务器系统盘最佳设置,启用系统的硬盘高级性能设置优化硬盘到最佳性能
- Docker之DockerFile讲解
- unity3d与eclipse集成开发android应用
- vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的
- linux限制进程使用的cpu使用率
- 在字符串中查找id值MySQL
- debian 11安装微信
- 三目表达式的错误使用
- Tomcat+Spring奇异事件之Component两次启动
- 大数据分析技术种类与应用
- 2022年全球市场三维测量产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
- HTML5:移动互联网的第二个苹
- 安卓相册更换头像和拍照更换头像
- Android 增量更新
- 李宏毅老师《机器学习》课程笔记-3卷积神经网络