我投的是 malloc 的结果吗?

在这个问题 [http://stackoverflow.com/questions/571945/getting-a-stack-overflow-exception-when-declaring-a-large-array] 中, 有人在评论 [http://stackoverflow.com/questions/571945/getting-a-stack-overflow-exception-when-declaring-a-large-array#comment388297_571961] 中建议, 我不应该投的结果 malloc , 即 int *sieve = malloc(sizeof(int) * length); 而不是: int *sieve = (int *) malloc(sizeof(int) * length); 为什么会出现这种情况? ……

共26个回答,已解决, 标签: c malloc casting
如何避免为链表中的每个节点调用 malloc

这个问题的灵感来自 避免使用 malloc 函数包装 [https://stackoverflow.com/q/56365330/3657941] 我写了一个程序,通过调用为链表中的各个节点分配内存malloc。 有速度测试在哪:malloc is wrapped by a function that causes malloc比正常情况需要更多时间。这使得测试能够检测到 malloc 的频繁使用。 我如何避免打电话malloc每个节点? ……

共5个回答, 标签: c linux malloc
指针比较如何在 C 中工作?是否可以比较不指向相同数组的指针?

在 K & R (C 编程语言第2 版) 第五章中,我阅读了以下内容: > 首先,指针可以在某些情况下进行比较。如果p and q point to members of the same array, then relations like ==, !=, <, >=,等正常工作。 这似乎意味着只有指向相同数组的指针可以进行比较。 然而,当我尝试这个代码 Char t = 't'; Char * pt = & t; Char x = 'x'; Char * px = & x; Printf ("% d \ n",pt> px); 1打印到屏幕上。 首先,我想我会得到未定义或一些类型或错误,因为pt and px不指向相同的数组 (至少在我的理解)。 也是pt > px because both pointers are pointing to variables stored on the stack, and the stack grows down, so the memory address of t is greater than that of x? Which is why ……

共5个回答, 标签: c pointers stack malloc heap
Malloc 在分配内存时是否保留了更多空间?

我正在观察我的测试程序中的以下行为: 我做 malloc() 1 MB, 然后 free() 它 sleep(10) 之后。我这样做五次。我正在 top 观察程序运行时的内存消耗。 一旦 free() -d, 我预计程序的虚拟内存 (virt) 消耗将下降 1 MB。但实际上事实并非如此。它保持稳定。这种行为的解释是什么?malloc() 在分配内存时是否会做一些保留? ……

共3个回答, 标签: c malloc free dynamic-memory-allocation
C Keil 编译器使用 malloc 作为局部变量,为什么?

我在我的代码中的某个地方有一个问题,我想声明一个数组,但它失败了。经过一些调试,我发现它在拆卸窗口中使用 malloc,所以我增加了堆大小,它工作正常! 所以我的问题是为什么 keil 使用堆局部变量? 以下是变量声明代码: Uint8_t 结果 [数据-> 容量字节]; Memset (结果,0,sizeof (结果)); 我添加了标志 C99 ……

共2个回答,已解决, 标签: c malloc heap c99 keil