malloc 相关问题

malloc函数在C中执行动态内存分配,是标准库的一部分。有关malloc的用法,行为和实现的问题,请使用此标记。

Windows 上的进程实际使用多少内存?

平台特性:Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz 1.80 GHz、8GB RAM、Windows 10、Visual Studio、MSVC 编译器 我用 C++ 编写了以下代码,然后使用

回答 1 投票 0

g_slice真的比malloc快吗

GLib 文档建议使用 GLib 切片分配器而不是 malloc: “对于新编写的代码,建议使用新的 g_slice API 而不是 g_malloc() 等,只要对象...

回答 3 投票 0

Free 似乎正在破坏缓冲区值

好吧,我知道释放缓冲区后读取缓冲区是错误的。我试图证明 free() 不会触及缓冲区中存储的数据,但我无法证明这一点:) 这是代码 #包括...

回答 1 投票 0

我是否正确进行动态内存分配,而没有分配任何不必要的空间?

为此代码动态地为堆栈分配了多少内存? #包括 使用命名空间 std; #定义最大大小100 typedef 结构体栈 { int 顶部; 整数容量; ...

回答 1 投票 0

如何在C中从新的虚拟页面分配内存?

我正在分析跨虚拟页面分配的效果,同时创建维度为 PageSize x PageSize 的二维数组。我的机器的页面大小是 4096。我有一个 4096 个整数指针的数组(co...

回答 2 投票 0

这个函数有什么问题吗?

我猜malloc和goto的关系有问题。或者,我猜想这里发生了一些内存浪费或内存损坏。 希望有人能指出我确切的错误......

回答 6 投票 0

理想情况下这段代码不应该在结束前释放tmp吗?

我很困惑为什么在将 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 通常是一个好习惯。

回答 1 投票 0

如何安全地处理 C 中的内存分配错误?

我正在开发一个 C 程序,需要为结构数组动态分配内存。我知道使用 malloc 有时会失败,返回 NULL。但是,我不确定最好的练习...

回答 1 投票 0

使用umm_malloc库时遇到的分段错误问题

我使用了github上的umm_malloc库,这是一个适合嵌入式系统的动态内存分配库。我写了一个测试函数,但是报错。以下是我的测试功能...

回答 1 投票 0

如何在 Windows 上为 Java 应用程序使用 mimalloc (或 jemalloc )?

我们在 Windows 上有一个完全用 java(实际上是 kotlin)编写的应用程序。有了malloc,我们的申请进程好像一直在增长,并没有释放内存,而Heap也没有什么问题……

回答 1 投票 0

leetcode第46题中int** returnColumnSizes是什么(语言:c)

这个问题是基于leetcode问题46:排列。 为了方便起见,问题的副本: 给定一个由不同整数组成的数组 nums,返回所有可能的排列。你可以回来...

回答 1 投票 0

为什么 printf 无法打印指针字符串?

我用c语言编写了这个程序,用于打印字符串的内容。 但不要打印字符串! #包括 #包括 #包括 #定义 GROW_BY 10 int main(){ ...

回答 1 投票 0

如果 malloc() 返回有效指针,但将 errno 设置为非零怎么办?

在微软关于malloc()的文档中,有以下两条语句: 在“返回值”部分: malloc 返回一个指向已分配空间的 void 指针,如果存在则返回 NULL

回答 1 投票 0

C++中malloc和new的内存使用差异

我观察到在简单的 C++ 程序中使用 malloc 与 new 时总内存分配存在差异,如 Valgrind 报告的那样。下面是我的程序的两个版本以及对应的

回答 1 投票 0

如何从popen中获取结果?

我想为程序创建一个小补丁。我对C了解不多。 当我的函数 get_streamlink 返回缓冲区时,下一个代码无法通过 m3u8 url 获取视频。当函数返回静态时...

回答 1 投票 0

以下代码出现错误:“munmap_chunk():无效指针”

使用命令编译了以下代码片段:gcc -g -std=c99 src.c src.c: #包括 #包括 无效填充(int * arr,int len,int val){ 对于 (int i = 0; i <...

回答 1 投票 0

malloc() 没有分配我期望的内容

我有两个整数指针,a和b。我使用以下行: int* b = malloc(3 * sizeof(int)); 我希望调用 sizeof(b) 返回 3 * sizeof(int) ,等于 12,但事实并非如此,它

回答 1 投票 0

C 中的内存泄漏(malloc)

为了学习堆内存,我使用了以下代码。我在被调用函数(fn1)内使用了 malloc,出于某种原因,我决定不释放被调用函数(fn1)内的内存。我通过了

回答 2 投票 0

为什么我的 malloc 会导致 lubuntu 上的 netbeans 中出现源未找到错误 (malloc.c)?

我在lubuntu上使用netbeans8.0.1,我无法在调试环境中通过我的malloc实例。我刚刚到达我的构建树 malloc 函数,然后出现反汇编窗口,显示“!所以...

回答 2 投票 0

在 C 中,分配一个 3*sizeof(float) 的空间并创建一个大小为 3 的浮点数组,做的事情基本上是一样的吗?

我的问题是是否写下这一行: float* array = malloc(3*sizeof(float)); 相当于写:float array[3]; 如果没有,为什么? (我真的是 C 新手) 我注意到当我尝试操纵

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.