首页 程序笔记 c++运行时报错误:there is a mismatch in alloc and dealloc

c++运行时报错误:there is a mismatch in alloc and dealloc

问题描述

在运行一个c/c++的程序时,报如下错误:ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete)。代码如下:

void DemoFunc(char *pBuf)
{
  char* val2 = new char[256];
  for (int i = 0; i  254; i++)
  {
     val2[i] = pBuf[i+305];
  }
  val2[254] = 0; // 0-Termination
  //do something...
 
 //do something end.
  delete val2;
  // ... 
}

解决办法

在C++中new 和 new [] 在释放的时候,需要使用一直的形式: delete 和 delete [].
也就是说:

  • new创建的是普通对象,则使用delete进行释放;
  • new创建的是数组对象,即new ClassName[N],在释放时,这需要使用delete [];

所以,修复以上问题,只需要将 delete val2; 修改为 **delete [] val2; **即可。

另外,添加环境变量ASAN_OPTIONS可以屏蔽cppcheck,也就不会报这个错误了

export ASAN_OPTIONS=alloc_dealloc_mismatch=0

但还是应该从内存泄漏着手去修改,不推荐设置环境变量屏蔽cppcheck。

3

站心网

问题描述 在运行一个c/c++的程序时,报如下错误:ERROR: AddressSanitizer: alloc-dealloc-mismatch (opera..

为您推荐

鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?

鸿蒙(HarmonyOS)和 OpenHarmony 系统本身并不原生支持直接运行 .NET Core,但可以通过一些方法使 .NET Core 应用在其上运行。鸿蒙和 OpenHarmony 是基于 LiteOS 和 Linux 内核的多终端操作系统,因此它们的运行时..

.NET Core上传文件报Access xxx.tmp is denied错误

.NET Core上传文件本地调试正常,部署到IIS服务器之后会报错,错误是Access 'c:\\windows\\temp\\xxx.tmp' is denied.看上去是IIS用户没有权限访问系统临时文件夹的权限。经过测试,不需要特地去为temp文件..

AUC is not defined when there is no positive class in the data (Parameter 'PosSample')

使用ML.NET训练模型后,使用测试数据评估模型,验证模型的性能。执行Evaluate方法时报错:AUC is not defined when there is no positive class in the data (Parameter 'PosSample')。这个错误信息也不知道什么原因..

必须添加对程序集"netstandard, Version=2.0.0.0"错误解决方法

编译.net core项目出现如下错误:必须添加对程序集"netstandard, Version=2.0.0.0"。解决方法是更新.net core2,升级vs2017到15.4版本,升级framework到4.7版本。..

filezilla 数据socket错误 文件传输失败

在服务器上安装了filezilla服务器软件后,使用FlashFXP上传下载文件失败。网上找了一些关于这个文件的解决方案,分享一下希望可以帮到大家。使用FlashFXP默认设置的话,无法打开FTP目录。首先、需要设置使用“STAL -..

Android Volley BasicNetwork:performRequest:Unexpected response code 302 错误

Android Volley BasicNetwork:performRequest:Unexpected response code 302 for http://xxx异常,这个http://xxx的接口在浏览器中打开可以正常访问。接口做了302重定向,从http重定向到https的地址去了。Volley对重..

.NET中运行Java代码

在.NET中使用Java代码可以通过不同的方法和工具来实现,尤其是通过一些桥接工具或者中间件来进行跨语言的操作。以下是一些常见的方法:1. Java和.NET的互操作性:通过跨语言框架:IKVM.NET: 这是一个开源项目,允许..

使用IKVM.NET在.NET中运行Java代码

IKVM.NET是一个开源项目,它允许Java字节码在.NET平台上运行。通过IKVM.NET,可以在.NET环境中直接调用Java类和库。以下是使用IKVM.NET的基本步骤:步骤一:安装和配置下载和安装: 下载并安装IKVM.NET。你可以在官..

使用Docker Wine Qemu KVM在Linux运行Windows应用

Docker、Wine、Qemu和KVM都是在Linux上运行Windows程序的工具,但它们的实现方式和使用场景有所不同。Docker是一个容器化技术,它可以在Linux系统中创建和运行容器,这些容器可以包含Windows程序和其所需的依赖项。D..

Angular echarts No provider for InjectionToken NGX_ECHARTS_CONFIG!错误

npm install echartsnpm install ngx-echarts安装使用echarts运行时报如下错误ERROR NullInjectorError: R3InjectorError(IndexModule)[InjectionToken NGX_ECHARTS_CONFIG -> InjectionToken NGX_ECHARTS_CONFIG -..

Windows中通过BAT写注册表给exe增加管理员权限运行

Windows中如何通过BAT命令写注册表,如何个exe程序增加管理员运行权限?以下脚本演示了通过BAT写注册表键值的方式,给exe增加管理员权限运行的属性。bat命令文件内容如下:@echo offecho start reg...set df=%~dp0te..

React Error: Exceeded timeout of 5000 ms for a test. 错误

为React项目编写单元测试时报错Error: thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."检查上下代码后是发现..

网页没有响应,错误代码: RESULT_CODE_HUNG的原因

网页没有响应,错误代码: RESULT_CODE_HUNG 的原因可能有以下几种:网页服务器宕机或超负荷网页服务器与客户端的网络连接断开网页服务器正在进行维护或升级网页客户端的网络环境不佳网页客户端的浏览器版本过低如果..

在64位的Windows系统下运行32位的C#程序如何控制重定向

前言在64位的Windows操作系统中,为了兼容32位程序的运行,并且让32位程序在64位的操作系统中不仅能操作关键文件文夹和关键的注册表,并且又要避免与64位程序的冲突,64位的操作系统采取了重定向机制。32位和64位相..

C#中通过Process运行程序如何获取进程的标准输出

在用C#写一个项目中的工具程序时,需要在C#程序中运行一个命令行的程序,同时将程序的命令行标准输出获取到并显示在指定的文本框中。查找相关资料找到以下办法,供大家参考。在创建Process的时候,通过如下方式来实..

.NET Core如何记录方法运行时间

.NET Core提供了两种方法来记录方法运行时间:使用Stopwatch类使用RequestTimeoutMiddleware中间件使用Stopwatch类Stopwatch类是一个计时器,可以用来测量代码的运行时间。要使用Stopwatch类来记录方法运行时间,您..

vs2019 nuget 搜索发生错误

如果在 Visual Studio 2019 中使用 NuGet 搜索时遇到错误,可能是由于以下几种常见原因:网络连接问题:确保你的计算机正常连接到互联网,检查防火墙或代理设置是否阻止了 NuGet 的访问。NuGet 源配置错误:在 Visua..

Windows中如何通过网络远程运行另外一台Windows的界面程序

前言对于Linux的GUI程序,我们可以通过xserver让运行在Linux中的GUI程序,将界面展示在Windows的系统中,就像操作Windows本机的界面程序一样。那么问题来了,如果两边都是Windows系统,我们是否也可以让一台Windows..

git push时报remote rejected shallow update not allowed 的问题

今天在git push 代码的时候遇到一个问题:Counting objects: 47, done.Delta compression using up to 4 threads.Compressing objects: 100% (21/56), done.Writing objects: 100% (17/58), 596.15 KiB | 0 bytes/s,..

修复 Ubuntu 上“E: 无法找到软件包”错误的 5 种方法

如果您在 Ubuntu 上安装软件包时遇到“E:无法找到软件包”错误,请不要担心,因为修复它很容易。要点定期更新软件包列表,以维护安全且最新的 Ubuntu 系统,确保访问最新的软件包、安全补丁、错误修复和改进的依赖..

发表回复

返回顶部