free相关内容

释放二维数组 - 检测到堆损坏

编辑:抱歉各位,我忘了提到这是在 VS2013 中编码的. 我有一个全局声明的结构: typedef struct data//存储搜索&的结构体排序运行时统计信息.{int **a_collision;} 数据;数据数据1; 然后我分配我的内存: data1.a_collision = (int**)malloc(sizeof(int)*2);//声明外部数组大小 - 值/键索引.f ..
发布时间:2021-11-24 22:31:36 C#

什么时候在 C 中使用变长数组,但是什么时候动态分配呢?

我在 C99 中发现了可变长度数组,但看起来它的行为与 malloc + free 几乎相同. 我发现的实际差异: 处理太大的数组: 无符号大小 = 4000000000;int* ptr = malloc(size);//ptr 为 0,程序不会崩溃整数数组[大小];//段错误,程序崩溃 内存泄漏:仅在动态数组分配中可能发生: int* ptr = malloc(size);. ..
发布时间:2021-11-18 04:30:26 其他开发

如果malloc()在同一位置分配内存,则访问释放的指针可能会导致数据损坏,除非将释放的指针设置为NULL.

由于用户(GeorgSchölly116K声望)在其问题中的陈述,出现了此Question陈述.应该真正设置指针吗?释放它们后将其设置为"NULL"? 如果此Question陈述为真 那我怎么弄不到数据将如何损坏? 代码 #includeint main(){int count_1 = 1,count_2 = 11,i;int * p =(int *)ma ..
发布时间:2021-05-31 19:49:26 C/C++开发

删除链表中的节点

我陷入了这个特殊的功能,该功能从链接列表中释放了所有偶数节点.我已经找到了如何从链表中释放所有节点的方法,但是我无法弄清楚.我发布的代码是非常错误的.我不明白的是如何使用节点* temp变量并将其链接到head-> next节点,因为head是释放的对象(因为它是偶数).另外,在while循环结束时,我知道需要增加到列表中的下一个节点,但是我似乎已经在第一个if语句中进行了此操作,因此不会调用cu ..
发布时间:2021-05-09 19:29:53 其他开发

如何释放主线程中的线程功能分配的内存

我已经在线程函数 f1 中分配了 heap 内存,此存储用于计算堆区域中的值,以便主函数可以看到它./p> 这是线程函数定义: void * f1(void * input){int sum =(int *)malloc(sizeof(int));/*计算*/pthread_exit((void *)& sum);} 在上面的代码中, sum 是堆分配的存储,其地址作为返回值传递到 ma ..
发布时间:2021-05-09 19:29:43 其他开发

释放分配的指针

以下代码是否释放为 x 分配的内存? int main(){char * x =(char *)calloc(100,sizeof(char));字符* y = x;免费(y);} 解决方案 是 这样做的时候 char * y = x; 您将 y 指向 x 指向的位置.由于 y 指向 calloc 返回的内存位置,因此 free(y); 是完全有效的.作为 @hac ..
发布时间:2021-05-09 19:29:37 其他开发

C-free()不会释放整个数组

我有一个指向int的指针,在我调用free之后,我看到只有前两个元素被释放了,其余的保持不变.有人可以解释吗? int main(){int * a =(int *)malloc(10 * sizeof(int));a [0] = 12;a [1] = 15;a [2] = 100;a [3] = 101;a [4] = 102;a [5] = 103;a [6] = 109;a [7] = ..
发布时间:2021-05-09 19:29:35 其他开发

C ++双重释放或损坏(输出)错误

打印输出后,出现“双重释放或损坏(输出)"错误.但是,此错误仅在输入较小时出现.对于较大的输入,程序不会抛出该错误.当我在主体内部创建多维数组并将其删除时,我没有收到错误.我只在此处发布了与该问题相关的部分代码.请请说明如何解决该问题. #include#include使用命名空间std;背包类{上市:int noItems,容量,值,重量;int * w ..
发布时间:2021-05-02 20:29:14 C/C++开发

使用calloc()设置char数组,还可以“释放"代码.完成后的数组

我正在尝试建立一个字符串数组(使用Linux在C语言中).该数组将容纳11个字符串(静态长度).我最初将数组设置为: char答案[10] [100]; 但是在我的代码中,我有一部分调用了fgets(input,sizeof(input),stdin).当调用此fgets()部分时,我的Answers数组的最后一个元素被input的值覆盖(关于Answers在堆栈中的位置吗?).因此,现在 ..
发布时间:2021-04-09 20:51:37 其他开发

在C语言中,是否可能只释放数组的第一个或最后一个位置?

我有一个数组,但是不需要它的第一个(或最后一个)位置.因此,我将新变量指向数组的其余部分,但应释放数组的第一个/最后一个位置.例如: p = read_csv_file();q = p + 1;//我不需要第一个CSV文件字段//在这里,我只想释放p的第一个位置返回q; 否则,我必须将数组存储到其他变量(不包括第一个位置)中,然后释放原始数组.像这样: p = read_csv_fil ..
发布时间:2021-04-09 20:21:13 其他开发

释放内存错误?

我需要释放 bitpointer ,因为该函数已多次执行并且内存使用量由于我不了解的原因而增长,并且在达到22mb的ram使用率时崩溃.尝试删除 bitpointer ,例如 delete [] bitpointer 或 free(bitpointer),我遇到访问冲突错误.但是我不明白为什么,因为该函数不再使用指针,并且设置了新的红色,蓝色,绿色值. void Get_Color(int x ..
发布时间:2021-04-03 18:33:50 C/C++开发

释放NULL指针

可能重复: 在ptr为NULL的情况下,free(ptr)会损坏内存吗? 在其中释放NULL指针是否是一种好习惯C? 我有一个关于释放空指针的问题. char *p = NULL; free(p); free(NULL)会导致崩溃吗? 还是取决于编译器? 解决方案 来自免费的手册页 void free(void *ptr); free()函数取消分配由 ..
发布时间:2020-11-10 22:07:52 其他开发

malloc和C语言中的free

如果我有类似的东西 struct Node *root; struct Node *q; root = malloc( sizeof(struct Node)); q = root; free(q); 节点q指向释放的节点吗?还是我必须将root传递给free函数? 解决方案 root和q都具有相同的值,也就是说,它们指向相同的内存位置.调用free(q)之后,它们两 ..
发布时间:2020-11-10 22:07:38 其他开发

* glibc检测到双重释放或损坏()*消息!

当我运行程序时,以下deleteNode函数将获得这些信息: * glibc检测到 free():下一个大小无效(正常):0x000000000103dd90 * * 即使我免费提供了(此处);发表评论,我收到以上消息. 我不认为其他“免费"电话会引起这样的问题.但是我不明白为什么这是错误的. :/ struct List *deleteNode(int Code,int i,char ..
发布时间:2020-11-10 22:07:36 其他开发