93得票12回答
为什么C语言中的`free`函数不需要指定要释放的字节数量?

仅仅为了清晰明了: 我知道malloc和free是在C库中实现的,该库通常从操作系统中分配内存块,并进行自己的管理,将较小的内存块传递给应用程序并跟踪分配的字节数。这个问题不是关于 free如何知道释放多少内存。 相反,我想知道为什么free最初就是这样设计的。作为一种低级语言,我认为要求C...

88得票10回答
为什么在gcc中,malloc会将值初始化为0?

可能在不同的平台上会有所不同,但是当我使用gcc编译并运行以下代码时,在我的ubuntu 11.10中每次都得到0。#include <stdio.h> #include <stdlib.h> int main() { double *a = malloc(s...

86得票12回答
84得票13回答
如何找到导致malloc“双重释放”错误的原因?

我正在使用Objective-C编写一个应用程序,遇到了以下错误: MyApp(2121,0xb0185000) malloc: *** error for object 0x1068310: double free *** set a breakpoint in ...

84得票9回答
C编程:在另一个函数中使用malloc()

我需要帮助处理在另一个函数中使用malloc()。 我从main()传递了一个指针和大小到函数中,我想要在被调用的函数中使用malloc()来为该指针动态分配内存,但是我看到的是...所分配的内存是为被调用函数中声明的指针而不是在main()中的指针。 我应该如何传递指向函数的指针并为传递...

84得票8回答
C语言 - 释放结构体

假设我有这个结构体:typedef struct person{ char firstName[100], surName[51] } PERSON; 我正在使用malloc分配空间,并用一些值填充它PERSON *testPerson = (PERSON*) malloc(sizeo...

81得票2回答
tcmalloc/jemalloc和内存池之间有什么区别(以及选择它们的原因)?

tcmalloc/jemalloc是改进的内存分配器,还引入了内存池以实现更好的内存分配。那么它们之间有什么区别,我在应用程序中该如何选择它们呢?

77得票9回答
数组类型和使用malloc分配的数组之间的区别

今天我在帮助我的一个朋友处理一些C代码,我们遇到了一些奇怪的行为,我无法解释为什么会发生这种情况。我们有一个包含整数列表的TSV文件,每行一个int。 第一行是列表中行数的数量。 我们还有一个非常简单的“readfile” c文件。第一行读取 n,即行数,然后进行初始化:int list[n]...

77得票6回答
在Linux(和其他平台)上,malloc是否会惰性地创建分配的支持页面?

在Linux上,如果我使用malloc(1024 * 1024 * 1024),那么malloc实际上会做什么呢? 我确定它会为分配分配虚拟地址(通过遍历空闲列表并在必要时创建新映射),但它是否实际上创建了1 GiB的交换页面?还是像mmap一样,在实际触摸它们时才mprotect地址范围并...

75得票4回答
使用malloc时出现"invalid conversion from `void*' to `char*'"的无效转换?

我遇到了以下代码的问题,错误出现在第5行: 错误:从void*转换为char*是无效的 我正在使用codeblocks的g++,并尝试将此文件编译为cpp文件。这有关系吗?#include <openssl/crypto.h> int main() { char...