16得票3回答
为什么malloc没有“使用完”我的计算机内存?

我有一个程序,它分配了256MB的内存,在用户按下 ENTER 键后会释放内存并终止程序。#include <stdio.h> #include <stdlib.h> int main(void) { char *p, s[2]; p = mallo...

38得票3回答
glibc中已弃用的__malloc_hook功能的替代方法

我正在为C语言编写一个内存分析器,为此通过malloc_hooks拦截对malloc,realloc和free函数的调用。不幸的是,由于它们在多线程环境中表现不佳,这些函数已被弃用。我找不到一份描述替代最佳实践解决方案以实现同样功能的文档,能否有人为我解惑? 我读到过一个简单的#define...

14得票8回答
malloc如何工作?

可能是重复问题: 在C语言中,free和malloc是如何工作的? 考虑这样一种情况:我需要通过malloc分配20个字节大小的内存。为了使malloc()函数调用成功,这20个字节必须在内存中连续吗?还是可以分散在多个位置?例如,在上述情况下,如果有4或5个10字节的块,malloc...

22得票2回答
当我们使用负参数调用Malloc时会发生什么?

7.22.3.4 malloc函数 malloc函数用于分配一个对象的空间,该对象的大小由size参数指定,其值为未确定的。 原型:void *malloc(size_t size); 当我将一个负值作为参数传递时,malloc(negative)返回NULL。 这是因为[size_t...

9得票3回答
Char **的用法和打印

在 C 语言中,我使用 char ** 来存储一系列字符串。 这是我的代码: char ** c; //now to fill c with data ???? //cannot change: printf ("%*s%s", 0, "", *c); while (*++w) ...

8得票5回答
当尝试释放由堆管理器分配的比要求更多的内存时会发生什么?

这个问题在我的面试中被问到。 假设char *p=malloc(n)分配了比n更多的内存,即分配了N个字节的内存,并使用free(p)释放了分配给p的内存。 堆管理器是否能执行此类错误分配?现在会发生什么情况,会释放n个字节还是N个字节? 有没有办法找到已释放的内存量? 编辑 有没有...

41得票10回答
malloc在什么情况下会返回NULL?

这种情况从未发生在我身上,因为我已经编程多年了。 有人能给我举一个非平凡的程序例子吗,在这个程序中malloc实际上不起作用? 我不是在谈论内存耗尽的情况: 我正在寻找一个简单的情况,当您分配一个由用户给定的边界大小的单个内存块(比如一个整数)时,malloc会失败。

11得票5回答
如何在函数结束后“释放”变量?

在C语言中,通过调用malloc函数分配内存后,应该如何正确释放内存?我需要分配内存、使用它,并在结束后将其返回,然后释放它。char* someFunction(char* a, char* b) { char* result = (char*)malloc(la + 2 * size...

20得票4回答
对齐分配内存实现的解释

这不是作业,而是为了我的个人学习而纯粹进行的。 我无法弄清楚如何实现对齐的malloc,所以上网查找并找到了这个网站。为了便于阅读,我将在下面发布代码:#include <stdlib.h> #include <stdio.h> void* aligned_mall...

16得票2回答
我该怎样在C语言中声明和初始化一个结构体指针数组?

我有一个简单的 C 作业。我正在尝试创建一个结构体指针数组。我的问题是如何将每个指针初始化为 NULL?此外,当我为数组成员分配内存后,我无法向数组元素指向的结构体赋值。#include <stdio.h> #include <stdlib.h> typedef st...