遇到的问题:
程序在进入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问题及解决方案相关推荐

  1. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  2. Chrome不支持showModalDialog的解决方案

    Chrome不支持showModalDialog的解决方案 昨天在使用showModalDialog的时候,遇到如下问题: 如果子窗口被刷新过,那么父窗口就接受不到子窗口的返回值. 为了解决这个问题, ...

  3. GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案

    关于 GCC 提示找不到指定库文件的这个问题,通常出现在以下 2 个场景中: 利用静态库或者动态库文件实现链接操作(生成可执行文件)时,·GCC 可能会提示 xxx:No such file or d ...

  4. 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. ...

  5. 【VS实践】VS解决方案中出现无法生成DLL文件

    前言: 这几天在学习牛腩新闻发布系统,突然发现标准的过程原来是从D层倒着往U层敲,在敲的过程中,遇到了一个问题:D层生成的DLL文件,在B层和U层中使用不了! 从早上10:00~15:30,自己弄了好 ...

  6. Tomcat 1099端口占用重启无效,查不到进程,改换端口无效解决方案

    不知道怎么的,突然Tomcat报错1099端口被占用 以下总结了网上可能有效的三种解决方案: 方案一对我来说无效,根本查找不到1099的进程 方案二对我来说也无效 方案三有效,关闭了hyper-v服务 ...

  7. 华为公有云架构解决方案

    华为公有云架构解决方案 华为公有云架构 华为公有云的主要服务如弹性云服务器(ECS).弹性伸缩服务(AS).云硬盘 (EVS).云硬盘备份(VBS).对象存储服务(OBS) .虚拟私有云(VPC).弹 ...

  8. 半导体与智能汽车行业解决方案

    半导体与智能汽车行业解决方案 EDA芯片仿真.IC验证.在线电路仿真:Cadence/Synopsys/Mentor软件加速. IC设计公司 帮助芯片代工厂进行Synopsys VCS,Synopsy ...

  9. 云端一体全栈解决方案

    云端一体全栈解决方案 随着万物互联时代的来临,在终端设备方面,无论是单独部署的个人电脑,接入云平台的瘦客户端,还是其它通过有线和无线接入服务端的多样化设备,用户都呼唤终端设备有更高的性能,更好的用户体 ...

  10. NVIDIA DGX SUPERPOD 企业解决方案

    NVIDIA DGX SUPERPOD 企业解决方案 实现大规模 AI 创新的捷径 NVIDIA DGX SuperPOD™ 企业解决方案是业界首个支持任何组织大规模实施 AI 的基础架构解决方案.这 ...

最新文章

  1. 腾讯AI Lab两大算法刷新人脸识别与检测纪录,秉承「基础研究+落地应用」之路
  2. java实现微信企业付款到银行卡_微信企业付款到银行卡实现方式 - 黎明互联-官方博客 - 黎明互联 - 区块链培训,PHP培训,IT培训,职业技能培训,追求极致!改变您的职业生涯!...
  3. 人脑细胞在培养皿中学会打游戏,比AI学习速度快18倍还省电,有黑客帝国那味了...
  4. struts2中拦截器和过滤器的比较
  5. CentOS 7 安装nginx
  6. 服务器系统盘最佳设置,启用系统的硬盘高级性能设置优化硬盘到最佳性能
  7. Docker之DockerFile讲解
  8. unity3d与eclipse集成开发android应用
  9. vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的
  10. linux限制进程使用的cpu使用率
  11. 在字符串中查找id值MySQL
  12. debian 11安装微信
  13. 三目表达式的错误使用
  14. Tomcat+Spring奇异事件之Component两次启动
  15. 大数据分析技术种类与应用
  16. 2022年全球市场三维测量产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  17. HTML5:移动互联网的第二个苹
  18. 安卓相册更换头像和拍照更换头像
  19. Android 增量更新
  20. 李宏毅老师《机器学习》课程笔记-3卷积神经网络

热门文章

  1. 文本框失去焦点事件、获得焦点事件
  2. mongodb敏感数据加解密
  3. Dubbo 自定义异常,你是怎么处理的?
  4. Elasticsearch入门登录篇
  5. 什么是聚合页面?网站优化做聚合页面的好处
  6. 最好的开源网络入侵检测工具
  7. 简一论币:8.14 晚间BTC行情分析及操作建议
  8. WebGL入门(十二)-使用varying变量在顶点着色器给片元着色器传值,绘制彩色三角形
  9. 腾讯撕开中国NFT的“遮羞布”
  10. linux获取本机ip地址函数,Linux编程获取本机IP地址