free相关内容
Windows和Linux。 当我在C程序中分配内存时,良好的编码要求我在程序结束前释放内存。 假设: int main (int argc, char *argv[]) { char *f_name; FILE *i_file; f_name = malloc(some_amount); // put something in f_name *
..
在程序结束时遇到释放内存的问题。 这是学校的练习,用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-
..
我的插入和显示函数如下所示: int push_front( Node **head, int rollnumber, int src, int dst, double gentime ) { Node *new_node = malloc( sizeof( Node ) ); int success = new_node != NULL; if ( success
..
我对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
..
我一直在做一个使用结构作为字符串存储的项目。我声明了一个由char类型成员组成的结构: struct datastore1 { char name[50]; char address[50]; char email[50]; char number[50]; char idnum[50]; }; 我知道我只能做char *name, char *a
..
很好地比较了Malloc/Free和new/Deletehere,并很好地解释了Malloc()和Free()是如何工作的here。显然,我们不应该将它们混为一谈--使用Free和new,或使用DELETE和Malloc。 我们可以看到很多开源项目,有许多贡献者,同时使用这两种机制,同时尊重上面的“不混合”规则。通常,在一个文件中只有一种方式(一个作者,一个偏好)。我已经分叉了这样一个项目,
..
我们都被教导必须释放分配的每个指针。不过,我对不释放内存的实际成本有点好奇。在一些明显的情况下,比如在循环或线程执行的一部分内调用malloc()时,释放内存是非常重要的,这样就不会有内存泄漏。但请考虑以下两个示例: 首先,如果我有如下代码: int main() { char *a = malloc(1024); /* Do some arbitrary stuff
..
..
当我运行我的 (C++) 程序时,它会因此错误而崩溃. * 检测到 glibc * ./load: 双重释放或损坏 (!prev):0x0000000000c6ed50 *** 如何追踪错误? 我尝试使用 print (std::cout) 语句,但没有成功.gdb 可以让这更容易吗? 解决方案 如果你使用的是 glibc,你可以将 MALLOC_CHECK_ 环境变量设
..
..
如何释放 const char*?我使用 malloc 分配了新内存,当我试图释放它时,我总是收到错误“不兼容的指针类型" 导致这种情况的代码类似于: char* name="阿诺德";const char* str=(const char*)malloc(strlen(name)+1);自由(str);//这里出错 解决方案 有几个人发布了正确的答案,但出于某种原因,他们一直在删除它
..
我在 Solaris 上支持一些 c 代码,而且我看到了一些奇怪的东西,至少我认为是这样的: char new_login[64];...strcpy(new_login, (char *)login);...免费(新登录); 我的理解是,由于变量是一个本地数组,内存来自堆栈,不需要被释放,而且由于没有使用 malloc/calloc/realloc,所以行为是未定义的. 这是一个实时系
..
代码如下: #include 整数编号 = 3;//静态外部变量int *ptr = #int main(void){int num2 = 4;//自动变量int *ptr2 = &num2;免费(ptr);//自由静态变量免费(ptr2);//自由自动变量返回0;} 我尝试编译上面的代码并且它可以工作,我很好奇free() 函数是否能够同时释放静态变量和自动变量?还是基本上什么都不做
..
我的链接列表和 valgrind 输出有问题.不用多说了,这里是我的链表: typedef struct Map map;结构映射{无效 *地址;双空闲时间;地图*下一个;}*地图列表; 列表是使用虚拟头节点创建的.如您所见,该结构体包含一个地址和一个空闲时间,我尝试将它们关联起来. 在find_and_free 函数中,我使用时间搜索此列表,如果此时间小于列表中存储的时间,则取消分配保
..
我有一个非常简单的 C 代码来构造一个单链表,如下所示,其中我使用 malloc 为每个节点动态分配内存.在代码的最后,我想为每个分配的节点释放内存,想知道如何去做 - 如果我首先从头节点开始并释放它,那么指向后续节点的指针就会丢失并且会发生内存泄漏. 另一种方法是从头节点开始,将节点指针继续存储在一个单独的指针数组中,在存储节点指针的同时遍历列表直到尾指针,一旦到达尾节点,也将其存储到其他
..
假设我有以下程序 #include #include int main(void){国际*我;if ((i = malloc(sizeof(int) * 100)) == NULL) {printf("EROOR: 无法分配内存\n");返回-1;}/* 内存分配成功 *//* 内存未释放但程序终止 *///免费(i);返回0;} 上面的程序调用malloc来分配一些内存,并没有调用free来
..
为什么这不能成为 free() 的标准行为? 多个指针指向同一个对象: #include #include void safefree(void*& p){免费(p);p = NULL;}int main(){int *p = (int *)malloc(sizeof(int));* p = 1234;内部*&p2 = p;printf("p=%p p2=%p\n", p, p2);saf
..
所以这次我真的不知道如何放置标题.首先,我想说的是,如果问题与“家庭作业"有关,我在此页面上看到了几条关于警告的评论.我的是,但它也完成了,我只是想进一步了解代码的情况. 我也读过一段时间的帖子和书籍,但我觉得我仍然缺少一些东西. 在我使用的代码中有两行代码我不太明白.这项工作是关于获取用作参数的任何文件(如果它是 0 个文件,则从 stdin 读取),并将其向后打印在标准输出上.所有
..
可能的重复: (POD)释放内存:delete[]等于delete吗? delete 是否会释放数组中第一个元素之外的元素? char *s = new char[n];删除 s; 在上述情况下是否重要,因为 s 的所有元素都是连续分配的,并且应该不可能删除 仅数组的一部分? 对于更复杂的类型,delete 会调用第一个之外的对象的析构函数吗? Object *p = new
..
这个问题是在一次采访中问我的: 在 C++ 中, 如果我们使用 malloc 分配内存并使用 delete 来释放分配的内存会怎样? 如果我们使用 new 分配内存并使用 free 释放它会怎样? 如果在代码中使用上述东西,我们会面临哪些问题? 我的回答是没有区别.我这样说对吗? 解决方案 如果你这样做,你会遇到未定义的行为.永远不要尝试.尽管 new 可能通过
..