问题标签 [free]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
426 浏览

c++ - C++ 分配器::deallocate(NULL,1) 允许吗?

两者free(NULL)::operator delete(NULL)允许。分配器概念(例如 std::allocator 是否也允许deallocate(NULL,1),或者是否需要自己保护它?

0 投票
5 回答
3735 浏览

c - 在 C 中,是否有必要在退出时释放指针?

可能重复:
当您退出 C 应用程序时,malloc-ed 内存是否会自动释放?

在 C 中,是否有必要在退出时释放指针? 当程序存在时,它是否从仍然指向已分配块的指针中释放内存?

它依赖于操作系统吗?

0 投票
3 回答
2124 浏览

c++ - g++ 双重免费或腐败...但是如何?

我的代码似乎有问题,想知道你们是否可以帮助我找到问题...我尝试使用 gdb 和 valgrind,后者“更”有用,但我仍然无法修复我的错误。

下面是我的课程代码(这是我的缩小版,但问题的主要本质仍然存在):

/* 矢量.h */

/* 物理状态.h */

/* 物理状态.cpp */

/* 测试.cpp */

对不起,长度。这是 valgrind 的输出:

提前感谢任何可以帮助我的人,这让我发疯了!GD。

PS:我=(*这个);无= 0;

0 投票
2 回答
5083 浏览

c++ - 新建、删除、malloc 和免费

在一次采访中,有人问我这个问题:

在 C++ 中,

  1. 如果我们使用分配内存malloc并使用delete释放分配的内存怎么办?
  2. 如果我们使用分配内存new并使用释放它free呢?

如果在代码中使用上述的东西,我们会面临哪些问题?

我的回答是没有区别。我这样说对吗?

0 投票
3 回答
303 浏览

c - c - 循环中释放子字符串

我正在尝试为 struct ' ' 的每个成员获取一个子字符串,structs然后将该子字符串分配给temp_struct. 我遇到的问题是如何在每次迭代时释放子字符串,由于某种原因代码运行,但是valgrind抛出一个Invalid read of size 1,我假设我正在读取内存块。

我怎样才能释放子字符串?

谢谢

0 投票
5 回答
4885 浏览

c - realloc 和 free 导致“双重释放或损坏”

忍受我。我已经 8 年没有用 c 编码了,我完全困惑为什么我的字符串操作不起作用。我正在编写一个永远循环的程序。在循环中,我初始化了两个 char 指针,每个指针都传递给一个将文本添加到 char 指针(数组)的函数。函数完成后,我打印 char 指针并释放两个 char 指针。但是程序在 7 次迭代后终止,并出现以下错误消息

* 检测到 glibc * ./test: 双重释放或损坏 (fasttop): 0x0804a168 ***

0 投票
5 回答
281 浏览

c - 释放子字符串而不在c中进行双重释放

昨天我问了一个类似的问题,关于如何freesub-string. 现在我对同一个问题(涉及一组条件)还有一个问题,我如何在不进行双重释放的情况下释放以下子字符串?

0 投票
2 回答
10821 浏览

c - 这可能是由于堆损坏,这表明 cvector.exe 或其已加载的任何 DLL 中存在错误

我在测试程序中犯了很多错误!!!

调试源:http ://www.cppblog.com/Files/mymsdn/cvector-windows-has-triggered-a-breakpoint-in-cvector.zip

正确的版本:http ://www.cppblog.com/Files/mymsdn/cvector-svn-version-10.zip

我正在尝试编写向量结构的 C 语言版本。

如果我尝试运行(在 Microsoft Visual Studio 2008 中,默认快捷方式是 CTRL+F5)我的代码。它可以作为正确的逻辑执行以输出正确的结果。

但是如果我尝试在调试模式下运行它(在 Microsoft Visual Studio 2008 中,默认快捷键是 F5)。它会导致一个问题:(它来自输出窗口,并且还有一个警报框架来报告它)

HEAP [cvector.exe]:HEAP:释放堆块 393168 在释放后修改为 393190 Windows 已触发 cvector.exe 中的断点。

这可能是由于堆损坏,这表明 cvector.exe 或其已加载的任何 DLL 中存在错误。

这也可能是由于用户在 cvector.exe 具有焦点时按 F12。

输出窗口可能有更多诊断信息。

错误
(来源:cppblog.com

0 投票
2 回答
1084 浏览

delphi - 在调用 FreeMem (Delphi 32) 之前检查是否分配了内存

我一直在以某种方式释放对象的地方遇到错误,但我们最终在它们上调用 FreeMem。当然,这会导致错误,因为内存已被释放并引发错误。

我知道 try-catch 块可能会修复它,但这是很多 try-catch 块。使用常规 object.free 避免这种情况的方法是 FreeAndNil(object) 但我找不到 FreeMem 的等价物。在释放之前测试它是否被分配的东西。

在易于阅读、可维护性和稳定性方面,这里最好的解决方案是什么。

0 投票
7 回答
1555 浏览

c - 我应该在异常终止时释放分配的内存吗?

我的程序(文本模式的网络浏览器)正在动态分配内存。

当然,我会在运行时释放不需要的块。而且我会在正常终止之前释放所有内容 - 这样内存泄漏检查器就不会给我误报(并且在需要重大重构时保持灵活性)。

现在,我不做是在异常终止之前释放内存。(目前,我的程序在信号和 malloc/reallocs 失败后终止。)

我的问题是:你认为这种不好的风格吗?我应该在异常终止时释放吗?