- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Visual C++ 中,使用 new[]
分配一个对象数组,然后 delete
(不是 delete[]
)默认为 triggers undefined behavior of the following kind。
调用所有对象的析构函数需要知道对象的数量,所以Visual C++调用::operator new[]()
分配一个稍微大一点的缓冲区,把元素的数量放到开头,然后调用构造函数并返回指向第一个对象的指针。当 delete
完成后,它只会销毁第一个对象,然后将错误的指针传递给 ::operator delete()
,这恰好与 的实现方式完全相同: :operator delete[]()
默认情况下。
如果如下
class Class {
public:
~Class() { Sleep( 0 );}
};
delete new Class[1];
在发布配置中编译并在调试器下运行程序以断点停止:
ntdll.dll!_DbgBreakPoint@0()
ntdll.dll!_RtlpBreakPointHeap@4() + 0x28 bytes
ntdll.dll!_RtlpValidateHeapEntry@12() + 0x113 bytes
ntdll.dll!_RtlDebugFreeHeap@12() + 0x97 bytes
ntdll.dll!_RtlFreeHeapSlowly@12() + 0x246cf bytes
ntdll.dll!_RtlFreeHeap@12() + 0x17646 bytes
sample.exe!free(void * pBlock=0x0003339c) Line 110 C
sample.exe!main() Line 48 C++
sample.exe!__tmainCRTStartup() Line 266 + 0x12 bytes C
kernel32.dll!_BaseProcessStart@4() + 0x23 bytes
这看起来像是堆损坏 - 至少这是我在这种情况下所期望的。
我尝试在该行之前和之后调用 _heapchk()
,令人惊讶的是它两次都返回了 _HEAPOK
。我也是enabled memory leak detection,程序结束时没有报告泄漏。
如果 _heapchk()
返回 _HEAPOK
,我可以假设堆是完整的吗?
最佳答案
来自 the documentation (强调我的):
The
_heapchk
function helps debug heap-related problems by checking for minimal consistency of the heap.
它不会检查绝对的一致性和正确性:它应该能够检测到重大的、令人震惊的错误,但它不会捕获所有错误。
关于c++ - 如果 _heapchk() 返回 "okay",我可以假设堆没有损坏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076749/
如果我将一个流分配给一个变量,例如 final Stream docs = REST_CLIENT.postLS(RestClient.appendSegmentToPath(bucketUrl, "
我正在开发一个带有自定义弹出提醒的 iPhone 应用程序。在设计中,这些警报都有“取消”按钮,但由于在这些情况下没有什么可以取消的,所以我想将它们更改为“确定”按钮。 我的问题是:有关这些按钮标签的
NLTK 词语料库中没有短语“okay”、“okay”、“Okay”? > from nltk.corpus import words > words.words().__contains__("ch
我有一个偶尔会显示 UIAlertView 的 iOS 应用程序。例如,如果用户靠近某个位置,则向他们显示警报,除非我们已经在过去一小时内向他们显示了警报。 如何使用 KIF 进行测试?警报并不总是出
在下面的代码中,对话框的 Ok 按钮似乎始终处于焦点状态,因此当按下 enter 时,对话框被接受并关闭。我的目标是让用户在行编辑中编辑文本,然后在完成处理文本(editingFinished 信号)
我正在使用 C# 在 Visual Studio 2008 中编写代码(如果这有所不同)并且我有以下代码片段: if(saveFileDialog1.ShowDialog() == DialogRes
我不会在 dealloc 中清理存在应用程序生命周期的单例对象。有什么理由我应该这样做吗? - (void) dealloc { // never deallocs [super de
我在社交cam应用程序上看到了“可以观看视频”,但是仍然没有找到更改它的地方。在哪里可以更改? 最佳答案 我想这是一个运行OpenGraph action的按钮,而不是普通的Like按钮 关于auth
有问题的页面在这里: http://ezup.com/csg/gt.html 在 Firefox 中,会触发警报框,但页面会自动转发,无需等待用户的任何输入。这在 IE 和 Chrome 中都有效,只
我正在为一个学校项目制作一个应用程序,但我被困在一个领域。我想使用一个确定按钮关闭弹出窗口。如果您有任何建议或有更好的弹出窗口实现方式,请分享。 package xyz.ashraf.whoisdel
在 Visual C++ 中,使用 new[] 分配一个对象数组,然后 delete(不是 delete[])默认为 triggers undefined behavior of the follow
在我的 RSS 阅读器开发中,我使用以下模型: Categorie -> Feed -> Post 对于我的主视图 Controller ,我想在类别名称旁边显示未读帖子的数量(read NSDate
我在 python 中有一个代表瓦片 map 的 2D,数组中的每个元素要么是 1 要么是 0,0 代表土地,1 代表水。我需要一种算法,将 2 个随机坐标作为圆心,一个半径变量(最大 5)并替换数组
我有一个名为 filterContactsByValue 的函数.它被柯里化(Currying)并接受一个值和一个联系人列表,然后根据该值过滤列表并返回(新的)过滤列表。 由于列表通常很大(超过 10
我最近有一些机会创建自定义 DSC 资源,但我无法验证配置是否已应用。两个例子是: 使用用户名/密码设置应用程序服务帐户。我无法读取密码以验证其设置是否正确。 为帐户添加对 RSA key 容器的访问
假设我有一个类(class),称之为学生。学生类有一个元素,一个名为 Id 的 int。我想重写 equals,这样如果将 Student 与 Integer 进行比较,该方法将返回 true。像:
我知道像 Integer、Double、Float 这样的原始包装器是不可变的,至少我是这么读的。问题是,如果我们增加它们的值,每个增加的值都将被拆箱为其原始表示,然后将结果分配给新的引用。 现在我想
有一些 jQuery 插件(jqgrid、DataTables 等)可用于在 html 表格中显示具有高级功能的数据。具有实时编辑能力的那些要么将 mysql 行 id 存储在表本身中(并使其不可编辑
假设我有一张电影表: +------------+---------------------+------+-----+---------+----------------+ | Field
我有两个假设的表:foo 和 bar。 有时,foo 可能与bar 相关,所以我制作了一个foo_bar 表来保存它们的ID。 但有时bar是独立存在的,与foo无关。 这在数据库世界中是不受欢迎的吗
我是一名优秀的程序员,十分优秀!