问题标签 [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.
c - malloc() 的奇怪行为
试图理解我的问题的答案
当试图释放堆管理器分配的内存时会发生什么,它分配的比要求的多?
我写了这个函数并且对它的输出感到困惑
输出
任何人都可以解释这种行为吗?或者这个实现是特定的?
如果 free(q) 未注释,我也会收到 SIGABRT。
c++ - 堆损坏问题
在我的模板函数中,我有以下代码:
这会导致“检测到堆损坏”错误。如果我不调用 free() 函数,则不会发生错误,但我担心我正在创建内存泄漏。返回的正确方法是什么“存储”的值,然后释放内存?
c - C 链表内存使用情况(可能的内存泄漏)
我在应该是一个简单的程序时遇到了麻烦。
void*
我使用指针在 C 中编写了一个单链表实现。但是,我有一个问题,因为某处可能存在内存泄漏,但是我使用 valgrind 检查了代码,它没有检测到此类错误。
但是当所有内存都被释放时free
,仍然有一些内存未释放(见评论)......我也尝试通过引用将所有内容传递给 add 函数,但这也没有解决问题。
我只是想知道这里是否有人对查看代码有任何意见。(这应该很简单!对吧?)
谢谢!
c - 关于我在 C 中使用 void* 作为动态数据类型的模块化代码的几个问题
几天前我发布了这个问题,每个人都建议我使用void*
,我做到了。我认为他们中的一些人还指出了一些我需要注意的事情,但我不确定它们到底是什么。但是,我遇到了一些问题......
我不会将我所有的代码都发布在它很大的地方,相反,我会发布我认为重要的东西,希望足以让你帮助我。
我的哈希表结构是这样的:
我的插入函数的签名是这样的:
在该函数内部的某个地方,当我在哈希表中找到一个空闲存储桶时,我会这样做:
所有这些都带来了一些问题:
1)正如您在上面看到的,我只是将空闲存储桶的每个键/值对设置为与键/值hashInsert
函数参数传递的相同指针。这带来了一个问题,您可能已经注意到了......例如,做这样的事情:
如果输入是“KeyA”,然后是“KeyB”,则两者都将“KeyB”作为存储桶键。同样的事情适用于值而不仅仅是键,因为它们基本上是相同的类型,因为我想让我的代码完全模块化,适用于任何数据类型。
我怎么能解决这个问题?
我的第一个想法是使用strdup(str)
并将其传递给hashInsert
函数。那将解决问题。由于这是在主代码中处理的,因此我也可以轻松地将malloc()
其用于需要作为值传递的任何其他数据类型(键可能始终是字符串或 int)。
但是这个解决方案带来了另一个问题......
2)我应该如何释放这个分配的内存?当然,它是由“主程序员”而不是“哈希表模块程序员”分配的,所以“主程序员”应该在主代码中释放它,对吧?但是,对我来说,这看起来不像模块化代码。
我的代码还有一个hashDestroy
功能,可以释放所有分配的内存。但是我怎样才能使用这个功能来释放一切呢?我不能只遍历每个键/值并free()
在它们上使用,因为它们中的一些可能一开始就不是malloc'd
任何程序员的,我不需要释放它们。
我怎样才能知道哪些是我hashDestroy
必须免费的,哪些不应该?
3)最后,我想我也可以把这个问题混在一起......在第一点,我的建议是使用strdup()
或malloc
“修复”那个特定问题(同时引入另一个问题),但这看起来也不是很模块化大部头书。这种内存分配应该在哈希表模块代码中完成,而不是由“主程序员”在主代码中完成。
你建议我如何解决这个问题?我的意思是,数据类型可以是任何东西,虽然使用strdup()
有很大帮助,但它只适用于字符串。如果我需要为某些特定结构或只是一个 int 分配内存怎么办?
很抱歉这篇大文章,但我认为这些问题都是相关的,我需要一些帮助来弄清楚它们,因为我的 C 知识并不是那么极端。我最近才知道void*
所以...
c++ - 我喜欢有免费的跨平台网络/线程/xml静态库吗
在 windows express vs 2008 编译器中使用简单并且在编译时没有问题的最好的 c++ 库是什么?最好为每个目的使用不同的库还是使用一个通用库?
c++ - C++ 释放静态变量
我希望我的类有一个指向动态分配的内存区域的静态指针。我了解如何初始化它 - 在我的情况下,我将在第一个对象需要它时对其进行初始化。但是,我不知道代码中何时/何地释放它。我想在程序终止时释放它。
我可能能够释放对象析构函数中的指针,但是我必须维护一个对象计数,以查看当对象是最后一个使用的对象时释放是否安全。
有没有更优雅的方法来做到这一点?
请告诉我。
谢谢,jbu
c - 释放指针和将其分配给 NULL 有什么区别?
有人可以告诉我两者之间的区别:
或者
c++ - c++ free(none gpl) webservice框架
我正在寻找不是 GPL c++ webservices 框架的好的免费软件我使用过 AXIS2 但它对我们的需求没有好处,是否有任何好的框架可以像 gSoap 这样既好又健壮
c - C 编程:循环内的 malloc 和 free
malloc()
我刚开始使用 C 并且对和的性能问题知之甚少free()
。我的问题是:如果我要在一个循环内调用malloc()
,然后free()
在一个while
循环内调用,比如 20 次迭代,与在循环free()
外调用相比,它会运行得更慢吗?
我实际上是使用第一种方法为缓冲区分配内存,从文件中读取可变长度字符串,执行一些字符串操作,然后在每次迭代后清除缓冲区。如果我的方法导致大量开销,那么我想寻求一种更好的方法来实现相同的结果。
c++ - 两次释放内存
在 C 和 C++ 中,释放 NULL 指针将导致什么都不做。
尽管如此,我还是看到人们说如果您“释放内存两次”,可能会发生内存损坏。
这是真的?当您两次释放内存时,幕后发生了什么?