首页 > 编程语言 >C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header"

C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header"

时间:2024-12-16 17:47:22浏览次数:10  
标签:__ 运行库 acrt C++ DLL header 编译器 版本 调试

 

 1. “修改了当前程序的vc运行库配置,问题解决

(1)修改:项目-属性-配置属性-C/C++-代码生成-运行库,将其改为“多线程调试(/MTd)”。”

  其中:

  • 【多线程/MT】
  • 【多线程调试/MTd】-----
  • 【多线程DLL/MD(默认)】-------
  • 【多线程调试DLL/MDd】

 

  

/MT、/MTd、/MD、/MDd什么意思:

  四个选项又是什么意思,有什么区别?接下来详细讨论。
    先奉上一个写得非常详细的博客链接:你所不知道的C和C++运行库,这个文章中写得非常详细,本文也主要参考了这篇文章。
    还有这篇C Runtime Library 的来历

(1)VS项目属性中的C/C++运行库:你不知道的C和C++运行库。

  为了提高C语言的开发效率,C标准定义了一系列常用的函数,称为C库函数。C标准仅仅定义了函数原型,并没有提供实现。因此这个任务留给了各个支持C语言标准的编译器每个编译器通常实现了标准C的超集,称为C运行时库(C Run Time Libray) ,简称CRT。对于VC++编译器来说,它提供的CRT库支持C标准定义的标准C函数,同时也有一些专门针对windows系统特别设计的函数。
  与C语言类似,C++也定义了自己的标准,同时提供相关支持库,我们把它称为C++运行时库或C++标准库。
  由于C++对C的兼容性,C++标准库包括了C标准库,除此之外还包括IO流和标准模板库STL。

 

  VC++在何处实现C和C++运行库:对应的MSVC编译器

  VC++完美的支持C和C++标准,因此也就按照C和C++的标准定义的函数原型实现了上述运行时库。为了方便有不同需求的客户的使用,VC++分别实现了动态链接库DLL版本和静态库LIB版本。同时为了支持程序调试且不影响程序的性能,又分别提供了对应的调试版本。调试版本的名称在Release版本名称后添了字母d。

  对于C运行时库CRT,VC6.0、VC2005、VC2008和VC2010均提供了DLL版本和LIB版本。

  (1)上述各个编译器提供的LIB版的CRT库,均实现在libcmt.lib。对应的调试版名称为libcmtd.lib

  (2)上述各个编译器提供的DLL版本名称根据编译器不同而不同,我们可以从名称上加以分辨。
  VC6.使用的CRT库的DLL版本在MSVCRT.DLL中实现, 对应调试版本为MSVCRTD.DLL。
  VC2005使用的CRT库的DLL版本在MSVCR80.DLL中实现,对应调试版本为MSVCR80.DLL。
  VC2008使用的CRT库的DLL版本在MSVCR90.DLL中实现,对应调试版本为MSVCR90D.DLL。
  VC2010使用的CRT库的DLL版本在MSVCR100.DLL中实现,对应调试版本为MSVCR100D.DLL。

  典型的dll:msvcr2019.dll以及调试版本msvcr2019d.dll

 

  C++标准兼容C标准,但VC各版本将C++编译器使用的C标准库与C编译器使用的C运行库一起实现,它们使用相同的运行库。

  对于C++标准库中的IO流和STL,VC6.0、VC2005、VC2008和VC2010也提供了DLL版本和LIB版本。
  (1)LIB版均实现在libcpmt.lib中,对应的调试版本为libcpmtd.lib。

  不同版本的编译器实现的DLL也不相同。
  VC6.使用的C++类库的 DLL版本在MSVCP60.DLL中实现, 对应调试版本为MSVCP60D.LIB。
  VC2005使用的C++类库的DLL版本在MSVCP80.DLL中实现,对应调试版本为MSVCP80.DLL。
  VC2008使用的C++类库的 DLL版本在MSVCP90.DLL中实现,对应调试版本为MSVCP90D.DLL。
  VC2010使用的C++类库的DLL版本在MSVCP100.DLL中实现,对应调试版本为MSVCP100D.DLL。

 

 

 

  

 

 

 

 

 

 

 

 

 

参考:  

  https://learn.microsoft.com/en-us/answers/questions/240332/assert-when-using-mtd-dynamic-library

   https://learn.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170

参考博客:https://blog.csdn.net/cnhk1225/article/details/78330322

标签:__,运行库,acrt,C++,DLL,header,编译器,版本,调试
From: https://www.cnblogs.com/icmzn/p/18610702

相关文章

  • 库卡KUKA机器人KRC4伺服马达维修指导分析
    通常情况下,库卡机器人伺服电机是实现机器人的关键组件,它提供了动力、位置和速度控制力和扭矩控制以及闭环控制等功能,使得库卡机器人能够在各种应用场景中发挥机器本身的性能。一、如果KUKA库卡机器人KRC4伺服马达不动了,可以按照以下步骤进行库卡机器人维修:1)先确认伺服马达的电......
  • HTML开发 - head 标签中 meta 标签功能解析
    什么是meta标签<meta>标签是HTML中用于定义网页的元数据(metadata)的元素,它并不会直接在浏览器中显示出来。<meta>标签通常位于<head>标签内,主要用来提供网页的一些信息或说明,这些信息有助于搜索引擎优化(SEO)、页面内容设置、字符编码等meta标签的常见用途1.定义字符......
  • docker操作命令大全
    镜像相关命令拉取镜像命令格式:dockerpull[选项][镜像名称:标签]示例:dockerpullubuntu:latest,这会从Docker官方仓库拉取最新版本(标签为latest)的Ubuntu镜像。你还可以指定镜像仓库,例如从阿里云镜像仓库拉取镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/your-......
  • Moo University - Financial Aid POJ - 2010
    //MooUniversity-FinancialAidPOJ-2010.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://vjudge.net/problem/POJ-2010#author=GPT_zh贝西注意到,尽管人类有许多大学可供就读,但奶牛却没有。为了解决这个问题,她和她的同伴们成立了一所新的大......
  • 云计算服务的不同类型:IaaS、PaaS、SaaS、Maas、Caas 或 Xaas
    基础设施即服务(IaaS)详细介绍资源提供形式:IaaS主要提供物理或虚拟的计算资源,包括服务器、存储设备、网络设备等硬件设施。用户可以像使用本地硬件一样对这些资源进行操作,例如,在租用的云服务器上安装操作系统、配置网络环境、部署数据库等。像阿里云的ECS(弹性计算服务)就是典型......
  • 模板性能问题排查方法
    1.概述模板的加载速度受到很多因素影响,如果一个模板预览的时候,加载较慢,该如何去分析问题原因呢?2.排查步骤2.1查看数据集查询速度大部分模板加载慢,都是因为sql执行速度比较慢。那么如何验证sql速度快慢呢?可以使用以下几种方案。1)在设计器的数据集中直接查询,人为感受sq......
  • 什么是 DevOps
    DevOps的定义与理念定义:DevOps是一种软件开发方法和理念,它强调开发(Development)团队和运维(Operations)团队之间的紧密协作与沟通,通过自动化流程和工具链来实现软件的快速交付、高质量部署和持续优化。其目标是打破传统开发和运维之间的壁垒,让软件产品能够更快地从开发阶段进入生......
  • PS教程
    PS教程全套零基础教学视频(全套81节2024全新版本)https://www.bilibili.com/video/BV1Cp4y1H7k73 6如何通过学好PS软件实现月薪过万平面设计是做什么的海报名片广告LOGO包装书籍排版平面设计行业发展如何全职就业,兼职就业。全职就业,好不好找工作,工作多不多。5个城市就有......
  • 为什么微服务一定要有网关
    服务发现与路由服务发现简化:在微服务架构中,服务的数量众多且可能动态变化。微服务网关作为所有微服务的统一入口,可以集成服务发现机制。它能够自动发现新上线的微服务或者感知到下线的微服务,客户端无需关心微服务的具体位置和网络细节。例如,在一个基于容器编排的微服务环境中,......
  • MYSQL数据库设计操作规范 ❤️【建议收藏】
    1.背景及其意义MySQL数据库与Oracle、SQLServer等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本文档旨在帮助或指导数据中心全体人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予......