free是一个释放从malloc和C中的其他函数获得的内存的函数。不要使用此标记来引用自由软件。在Stack Overflow上询问软件推荐是偏离主题的。如果您对自由软件有疑问,可以在此处询问:https://softwarerecs.stackexchange.com/
问题:如果我有一个指向“ints”结构的指针,如下所示,并将其转换为 void 并返回,这是否意味着我不再允许释放它? free如何跟踪分配...
好吧,我知道释放缓冲区后读取缓冲区是错误的。我试图证明 free() 不会触及缓冲区中存储的数据,但我无法证明这一点:) 这是代码 #包括...
我很困惑为什么在将 list 设置为指向 tmp 指向的位置(list = tmp;)后,这段代码释放列表而不是 tmp // 使用动态大小的数组实现数字列表 #包括 我很困惑为什么在将 list 设置为指向 tmp 指向的位置后,此代码释放列表而不是 tmp (list = tmp;) // Implements a list of numbers with an array of dynamic size #include <stdio.h> #include <stdlib.h> int main(void) { // List of size 3 int *list = malloc(3 * sizeof(int)); if (list == NULL) { return 1; } // Initialize list of size 3 with numbers *list = 1; *(list + 1) = 2; *(list + 2) = 3; // List of size 4 int *tmp = malloc(4 * sizeof(int)); if (tmp == NULL) { free(list); return 1; } // Copy list of size 3 into list of size 4 for (int i = 0; i < 3; i++) { tmp[i] = list[i]; } // Add number to list of size 4 tmp[3] = 4; // Free list of size 3 free(list); // Remember list of size 4 list = tmp; // Print list for (int i = 0; i < 4; i++) { printf("%i\n", list[i]); } // Free list free(list); return 0; } 唯一重要的是,您使用与 free 接手时相同的 地址 来拨打 malloc。分配的内存与该地址相关联,而不是与指针变量名称相关联。 在第一个 free(list); 处,您释放了用 int *list = malloc(3 * sizeof(int)); 分配的第一个块。 list = tmp; 现在list和tmp都指向同一个位置,从这个malloc调用返回的地址:int *tmp = malloc(4 * sizeof(int)); 从那里我们可以执行free(list)或free(tmp),这并不重要,因为它们指向同一位置,并且这是从malloc(4 ...调用返回的原始地址。 在第二个free()之后,list和tmp都是“悬空指针”,它们指向不再可用的内存区域。因此,在调用 free 之后直接将指针设置为 NULL 通常是一个好习惯。
假设我们有一个结构: 结构人{ 字符*名称; }; 结构人 *Person_create(char *name){ struct Person *who = malloc(sizeof(struct Person)); 断言(谁!= NULL); 谁->南...
以下网址: https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1492524105&period2=1495116105&interval=1d&events=history&crumb=tO1hNZoUQeQ 由用户36855提供...
为什么 free() 在没有 else 块的情况下会导致错误?
这是我现在拥有的完整代码。我已经尝试了我能想到的一切,但是当我有了 else 块的内容时,尽管代码跳过了它,但代码运行顺利......
我最近正在探索C的所有oop特性,当我遇到这个问题时。我想用 C 创建一个游戏引擎,所以我使用嵌套结构来组织所有东西。但是当释放内存时,
我正在尝试用C语言制作一个DTC。这是节点的结构: typedef 结构节点 { 整数值; 结构节点*下层; 结构节点*更高; } 节点; 释放使用...分配的内存
我正在尝试用C语言制作一个DTC。这是节点的结构: typedef 结构节点{ 整数值; 结构节点*下层; 结构节点*更高; }节点; 释放使用...分配的内存
我想在内存不足的情况下测试我的代码。 我用 setrlimit 编写了这个函数来限制可用内存: 无符号短整型 oom_enable = 0; 字符* _oomfill = NULL; uint32_t oom_setup(
Ubuntu VM 上的 C free(),一个关于堆内存的问题
分配和释放堆内存的简单程序: int main(int argc, char **argv) { 字符 *b1、*b2、*b3、*b4、*b_large; b1 = malloc(8); memset(b1, 0xaa, 8); b2= malloc(16); 内存...
我有两种代码变体: 第一: void PrintMem(const int* memarr,const size_t 大小) { 对于 (size_t 索引 = 0;索引 < size; ++index) { std::cout << '<'<<(index+1)<<...
一个函数,返回指向网格上每个可能的骑士运动的指针的二维列表。 除了我的空间自由函数在随机位置崩溃之外,一切正常:
一个函数,返回指向网格上每个可能的骑士运动的指针的二维列表。 除了我的空间自由函数在随机位置崩溃之外,一切正常:
使用tinyMCE和Angular 6,无需apikey(免费)
我尝试使用 Angular 6 安装tinyMCE。我正在关注 https://www.tiny.cloud/docs/integrations/angular2/ 上的文档。 一切正常,但我必须有 apiKey 才能使用tinyMCE 云。 我...
如何清除/删除TMS WEB Core中TWebGridPanel上的所有控件?
我有一个 TWebGridPanel 组件,我正在动态填充行和列以及这些行和列中的控件。 我的问题是我需要清除/删除/销毁所有控件...
没有struct 1和struct 2数组,struct 2内部有一个int数组
typedef 结构partition_struct { int* 元素; int 最后; //最后一个元素索引 int 暗淡; //n个分配的int } 分割; typedef 结构partitions_struct { 分区*分区;...
在 get_next_line 函数中,我使用指针 temp 来释放被 strchr 修改后分配给剩余的内存。 如果我删除 temp,函数就会泄漏,但就像现在一样,我是
我有这些结构: typedef 结构 Nodo{ int id_nodo; 结构诺多*下一个; 诺多; 类型定义结构{ Nodo *头; } inmap; //结构Grafo 类型定义结构{ 整数N; // numero dei nodi ...