free相关内容

当我尝试释放(void*key)时检测到堆损坏

在程序结束时遇到释放内存的问题。 这是学校的练习,用ADT实现二叉树,用数据类型char具体实现。 释放代码: void free_tree(TreeNode *root){ TreeNode *cur; if (!root) return; else{ cur = root; free_tree(cur->left); free_tree(cur->right); free(cur- ..
发布时间:2022-09-03 23:40:10 其他开发

使用FREE()时检测到堆损坏(&Q)

我对C语言还很陌生(这实际上是我第一次使用指针赋值),而且我找不出这个错误... 以下是我的代码: void str_rv(char c[]) { int i, len = str_ln(c); char *rev = (char*)calloc(len, sizeof(char)); check_mem(rev); for (i = 0; i ..
发布时间:2022-09-03 23:27:19 其他开发

在C++中是否兼容Malloc/Free和new/Delete?

很好地比较了Malloc/Free和new/Deletehere,并很好地解释了Malloc()和Free()是如何工作的here。显然,我们不应该将它们混为一谈--使用Free和new,或使用DELETE和Malloc。 我们可以看到很多开源项目,有许多贡献者,同时使用这两种机制,同时尊重上面的“不混合”规则。通常,在一个文件中只有一种方式(一个作者,一个偏好)。我已经分叉了这样一个项目, ..
发布时间:2022-06-11 22:09:48 C/C++开发

如果您在程序终止前的malloc之后没有空闲,会发生什么情况?

我们都被教导必须释放分配的每个指针。不过,我对不释放内存的实际成本有点好奇。在一些明显的情况下,比如在循环或线程执行的一部分内调用malloc()时,释放内存是非常重要的,这样就不会有内存泄漏。但请考虑以下两个示例: 首先,如果我有如下代码: int main() { char *a = malloc(1024); /* Do some arbitrary stuff ..
发布时间:2022-02-26 16:14:07 其他开发

如何追查“双重免费或腐败"?错误

当我运行我的 (C++) 程序时,它会因此错误而崩溃. * 检测到 glibc * ./load: 双重释放或损坏 (!prev):0x0000000000c6ed50 *** 如何追踪错误? 我尝试使用 print (std::cout) 语句,但没有成功.gdb 可以让这更容易吗? 解决方案 如果你使用的是 glibc,你可以将 MALLOC_CHECK_ 环境变量设 ..
发布时间:2022-01-31 10:27:37 C/C++开发

无法在 C 中释放 const 指针

如何释放 const char*?我使用 malloc 分配了新内存,当我试图释放它时,我总是收到错误“不兼容的指针类型" 导致这种情况的代码类似于: char* name="阿诺德";const char* str=(const char*)malloc(strlen(name)+1);自由(str);//这里出错 解决方案 有几个人发布了正确的答案,但出于某种原因,他们一直在删除它 ..
发布时间:2022-01-23 23:15:14 其他开发

堆栈内存上的 free()

我在 Solaris 上支持一些 c 代码,而且我看到了一些奇怪的东西,至少我认为是这样的: char new_login[64];...strcpy(new_login, (char *)login);...免费(新登录); 我的理解是,由于变量是一个本地数组,内存来自堆栈,不需要被释放,而且由于没有使用 malloc/calloc/realloc,所以行为是未定义的. 这是一个实时系 ..
发布时间:2022-01-16 09:57:38 其他开发

我可以在 C 中 free() 静态和自动变量吗?

代码如下: #include 整数编号 = 3;//静态外部变量int *ptr = #int main(void){int num2 = 4;//自动变量int *ptr2 = &num2;免费(ptr);//自由静态变量免费(ptr2);//自由自动变量返回0;} 我尝试编译上面的代码并且它可以工作,我很好奇free() 函数是否能够同时释放静态变量和自动变量?还是基本上什么都不做 ..
发布时间:2022-01-04 11:40:11 其他开发

C 链表 valgrind 大小读取无效

我的链接列表和 valgrind 输出有问题.不用多说了,这里是我的链表: typedef struct Map map;结构映射{无效 *地址;双空闲时间;地图*下一个;}*地图列表; 列表是使用虚拟头节点创建的.如您所见,该结构体包含一个地址和一个空闲时间,我尝试将它们关联起来. 在find_and_free 函数中,我使用时间搜索此列表,如果此时间小于列表中存储的时间,则取消分配保 ..
发布时间:2022-01-01 18:30:39 其他开发

LinkedList - 如何释放使用 malloc 分配的内存

我有一个非常简单的 C 代码来构造一个单链表,如下所示,其中我使用 malloc 为每个节点动态分配内存.在代码的最后,我想为每个分配的节点释放内存,想知道如何去做 - 如果我首先从头节点开始并释放它,那么指向后续节点的指针就会丢失并且会发生内存泄漏. 另一种方法是从头节点开始,将节点指针继续存储在一个单独的指针数组中,在存储节点指针的同时遍历列表直到尾指针,一旦到达尾节点,也将其存储到其他 ..
发布时间:2022-01-01 18:18:11 其他开发

使用 realloc (X, 0) 而不是 free() 并使用长度为 +1 的字符串 malloc

所以这次我真的不知道如何放置标题.首先,我想说的是,如果问题与“家庭作业"有关,我在此页面上看到了几条关于警告的评论.我的是,但它也完成了,我只是想进一步了解代码的情况. 我也读过一段时间的帖子和书籍,但我觉得我仍然缺少一些东西. 在我使用的代码中有两行代码我不太明白.这项工作是关于获取用作参数的任何文件(如果它是 0 个文件,则从 stdin 读取),并将其向后打印在标准输出上.所有 ..
发布时间:2021-12-24 17:13:57 其他开发

调用 free() 或 delete 而不是 delete[] 有什么危险吗?

可能的重复: (POD)释放内存:delete[]等于delete吗? delete 是否会释放数组中第一个元素之外的元素? char *s = new char[n];删除 s; 在上述情况下是否重要,因为 s 的所有元素都是连续分配的,并且应该不可能删除 仅数组的一部分? 对于更复杂的类型,delete 会调用第一个之外的对象的析构函数吗? Object *p = new ..
发布时间:2021-12-24 17:06:49 C/C++开发

新建,删除,malloc &自由

这个问题是在一次采访中问我的: 在 C++ 中, 如果我们使用 malloc 分配内存并使用 delete 来释放分配的内存会怎样? 如果我们使用 new 分配内存并使用 free 释放它会怎样? 如果在代码中使用上述东西,我们会面临哪些问题? 我的回答是没有区别.我这样说对吗? 解决方案 如果你这样做,你会遇到未定义的行为.永远不要尝试.尽管 new 可能通过 ..
发布时间:2021-12-24 17:04:33 C/C++开发