Tag: malloc

我可以在mingw中找到适用于Windows的C malloc /免费源代码吗?

我需要查看源代码,以了解windows应用程序编写时malloc代码内部发生的情况。

理解C malloc和sbrk()

我试图理解C中malloc和sbrk之间的区别以及它们之间的关系。 根据我的理解,malloc和sbrk几乎是一回事,但我读到malloc使用sbrk来分配内存。 如果有人向我解释,这真的令人困惑吗? 例如在这个程序中malloc调用sbrk吗? 如果是这样,它每次调用时都会调用sbrk,所以对于这个例子10次? int main(int argc, char **argv) { int i; void *start_pos, *finish_pos; void *res[10]; start_pos = sbrk(0); for (i = 0; i < 10; i++) { res[i] = malloc(10); } finish_pos = sbrk(0); return 0; } 谢谢,

我怎么知道c中指针变量的分配内存大小

在这种情况下,我遇到了一些问题,请问你的想法。 main() { char *p=NULL; p=(char *)malloc(2000 * sizeof(char)); printf(“size of p = %d\n”,sizeof (p)); } 在这个程序中它打印4个(char *)值,但我需要分配多少字节。

我使用malloc(0)作为char的指针,我的代码工作。 这是为什么?

我创建了一个指向char的指针数组。 我使用malloc(0)为那些指针分配内存。 之后,我使用scanf()向malloc(0分配的字节输入一个字malloc(0并且它有效。 这是为什么?

在C中使用malloc为typedef类型分配空间

我不确定我需要使用什么作为malloc的参数来在table_allocate(int)函数中分配空间。 我只想到count_table * cTable = malloc(sizeof(count_table *)),但这对size参数没有任何作用。 我应该为list_node_t分配空间吗? 以下是我正在使用的内容。 在.h文件中我给了这个签名: //创建一个count表结构并为其分配空间 //将其作为指针返回 count_table_t * table_allocate(int); 以下是我应该使用的结构: typedef struct list_node list_node_t; struct list_node { char * key; int值; //列表中的下一个节点 list_node_t * next; }; typedef struct count_table count_table_t; struct count_table { int size; //一个list_node指针数组 list_node_t ** list_array; }; 谢谢!

为什么我从未在此程序中看到Console中的Hello文本?

这是我在OS X Yosemite上运行的代码 int main(int argc, char *argv[]){ while (1) { srand(time(NULL)); int r = rand(); printf(“Allocating\n”); int *pi = malloc(5000000 * sizeof(int)); if(pi==NULL){ printf(“Hello”); } memset(pi, r, 5000000 * sizeof(int)); } } 所以这个程序最终停止运行,Console中的最后一行我看到: 分配 分配 分配 被杀:9 Korays-MacBook-Pro:hello2 koraytugay $ 如果malloc在这种情况下不返回NULL,它什么时候会这样做? 我的理解是这里发生了内存分配问题,但为什么不打印“Hello”?

如何动态分配2d字符数组?

我想动态分配一个二维数组来存储字符串。 我最初声明这个数组是这样的: char lines[numlines][maxlinelength]; 然而,当numlines非常庞大时,这会给我一个堆栈溢出。 如何动态分配它以防止堆栈溢出?

C中size_t类型的malloc参数的限制是什么? Docs说它有UINT_MAX的上限,但我不能超越INT_MAX

我想分配一个2.9GB的char数组 database = (char*) malloc((2900 * 1000000 * sizeof(char))); 这给出了整数溢出警告, malloc返回NULL 。 malloc参数的类型为size_t ,根据文档的类型为unsigned int 。 所以max应该是UINT_MAX ,至少是2.9GB。 但是,如果我尝试分配超过MAX_INT则malloc失败。 这是否意味着我的系统上的size_t是int类型? 我该如何检查? 我看了看 /usr/include/stdlib.h 和 ./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h 但是找不到size_t的定义。 非常感谢

malloc钩子的目的是什么?

使用malloc钩子的目的究竟是什么? 我已经读过它用于内存分析等,但从未真正理解过。

跟踪malloc分配的内存量

在对SO的相关问题进行快速扫描之后,我推断出没有能够检查malloc已分配给指针的内存量的函数。 我正在尝试使用C中的简单char *来复制一些std :: string基本function(主要是动态大小),并且不想一直调用realloc。 我想我需要跟踪已经分配了多少内存。 为了做到这一点,我正在考虑创建一个包含字符串本身的typedef和一个当前分配的内存量的整数,如下所示: typedef struct { char * str; int mem; } my_string_t; 这是一个最佳解决方案,或者您可以建议一些能够带来更好结果的方案吗? 在此先感谢您的帮助。