c++ - 无法删除指针,已触发断点
问题描述
我在在线课程中学习了 C++,但在 Visual Studio 中遇到了“删除”语句的问题。执行删除时,它会打开一个文件delete_scalar.cpp
并显示:
ConsoleApplication.exe 已触发断点。抛出异常
我已经从 temp 中移动了 SymbolCache 文件夹,包括 wntdll.pdb 等。
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
int *pInt = new int;
*pInt = 3;
cout << *pInt << endl;
cout << pInt << endl;
delete[] pInt; //error -- UPDATED: still get error with `delete pInt;`
return 0;
}
这里是输出信息,
“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\ntdll.dll”。已加载符号。“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\kernel32.dll”。已加载符号。“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\KernelBase.dll”。已加载符号。“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\msvcp140d.dll”。已加载符号。“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\vcruntime140d.dll”。已加载符号。“ConsoleApplication11.exe”(Win32):已加载“C:\Windows\SysWOW64\ucrtbased.dll”。已加载符号。线程 0x2fd0 以代码 0 (0x0) 退出。HEAP [ConsoleApplication11.exe]:指定给 RtlValidateHeap(00930000, 009359E8) ConsoleApplication11 的地址无效。
从视觉本身中删除_scalar.cpp,
//
// delete_scalar.cpp
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Defines the scalar operator delete.
//
#include <crtdbg.h>
#include <malloc.h>
#include <vcruntime_new.h>
#include <vcstartup_internal.h>
_CRT_SECURITYCRITICAL_ATTRIBUTE
void __CRTDECL operator delete(void* const block) noexcept
{
#ifdef _DEBUG
_free_dbg(block, _UNKNOWN_BLOCK); // the circle X symbol showed up there
#else
free(block);
#endif
}
我已经做了诸如启用和删除之类的断点操作,但是在 delete_scalar.cpp 上仍然触发了断点,并显示了圆圈 X 符号。
解决方案
如果你用 请求内存new
,你需要用 删除它delete
。
仅在使用delete [ ]
时使用new [ ]
。两者不匹配会导致未定义的行为。
推荐阅读
- java - 为什么在控制器或服务中,我们可以访问延迟加载的代理对象,但不能在 AbstractUserDetailsAuthenticationProvider 的子类中访问?
- amazon-web-services - 使用 TransferManager AWS S3 使用 SSE-C 下载目录
- javascript - 减少和求和对象数组(JS)
- python - 语音识别的冻结模型是如何创建的?
- powershell - 如何使用 Powershell 识别磁盘 Optane 或 Raid 类型?
- ios - 集合视图自动调整大小和设置重复背景
- xml - 如何使用ant替换XML文件中的一行?
- java - 给定字符串中的FirstNonRepeatingCharacter在java中使用时间复杂度O(n)
- html - HTML 5:我们可以更改默认错误消息的 css
- c++ - 如何在 C++ 中使用向量创建二维数组?