malloc 相关问题

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

为什么我们有一个缓慢的“ malloc”? 据我所知,自定义内存管理器用于多个中等大规模项目。 SECE的最新答案。SE讨论了以下事实:OpenSSL中的自定义内存分配器包括...

线程在这里讨论了内存分配器,特别是一个答案链接到一份学术论文,该论文表明,尽管人们出于绩效原因而写自定义记忆分配器时,因为

回答 1 投票 0

指定包括LLVM构建的目录路径

试图设置LLVM构建的包含目录路径 你好, 我正在尝试使用SNMALLOC分配器构建LLVM,并且根据CMAKE选项和说明,我设置了llvm_integrated_crt_alloc fla ...

回答 1 投票 0



为什么我在将最后一个索引分配给null terminator()

如果我只是将文件缩小而不将最后一个索引分配给NULL终结器,则可以在使用后释放内存。但是,如果我确实将最后一个索引分配给NULL终结器并尝试在使用数据后释放数据,则会获得错误。

回答 1 投票 0

RealLoc函数动态阵列大小超过所述的

#include <stdio.h> #include <stdlib.h> int main() { int n, i, added_data; int *data; printf("Enter the total number of elements: "); scanf("%d", &n); data = (int *)calloc(n, sizeof(int)); if (data == NULL) { printf("Error!!! memory not allocated."); exit(0); } for (i = 0; i < n; i++) { printf("Enter number %d: ", i + 1); scanf("%d", data + i); } printf("Enter number of elements to add: "); scanf("%d", &added_data); if(added_data > 0) { data = realloc(data, added_data * sizeof(int)); for (i=0; i < added_data; i++) { //n++; printf("Enter number %d: ", i + 1); scanf("%d", data + n); n++; } } int new_length = n + added_data; printf("\nnew length of array: %d", new_length); printf("\n"); for(i=0;i<new_length;i++) { printf("%d\n", data[i]); } printf("\n"); free(data); return 0; }

回答 1 投票 0




回答 1 投票 0


void*函数不会保留指向另一个函数内分配的内存的指针

我想创建一个仅出于学习目的的动态堆栈,但是我遇到了一个问题:如果DSTACK未初始化,我想pusk()函数可以处理,并且当我throug时它可以正常工作...

回答 1 投票 0

回答 1 投票 0

用malloc创建从3D数组创建三重指针以传递到函数,该功能将三重指针作为参数并更新其元素

I当前试图创建一个三重指针,以指向和更新C中静态分配的3D数组的内容。数组元素的更新将由一个函数完成:

回答 1 投票 0

为什么Malloc将分配的内存初始化为零? 据我所知,Malloc不会初始化分配的内存。但是,在MacOS ARM64上,所有值均为零。为什么会发生这种现象?这与ASLR有关吗? #include

不初始化分配的内存。但是,在MacOS ARM64上,所有值均为零。为什么会发生这种现象?这与aslr有关吗? #include <stdio.h> #include <stdlib.h> int main(int argc, const char * argv[]) { int *ptr = malloc(sizeof(int) * 100); for (int idx = 0; idx < 100; idx++) { printf("%d\n", ptr[idx]); // 0 } free(ptr); return 0; } (lldb) memory read 0x126004f70 --size 4 --count 100 -f d 0x126004f70: 0 0x126004f74: 0 0x126004f78: 0 0x126004f7c: 0 0x126004f80: 0 0x126004f84: 0 0x126004f88: 0 0x126004f8c: 0 0x126004f90: 0 0x126004f94: 0 0x126004f98: 0 0x126004f9c: 0 ... 据我所知,malloc不初始化分配的内存。 sort。 从同样的意义上讲,malloc也不会初始化分配的内存。 更重要的是,malloc没有积极初始化分配的内存,绝不会确保您看到任何非零内容。 您可以在某些分配中获得全零,其原因与malloc()的实施无关。 在MacOS ARM64上,所有值均为零。为什么会发生这种现象? C不需要这种行为。 它没有说明您为什么观察它。 C.我的第一个猜测是,我的第一个猜测是您机器的虚拟内存子系统向程序提供零命中的内存,因此当malloc分配程序以前没有使用过的内存时,它包含所有零是因为它来自OS。 还有其他可能性。 他们中的大多数都具有这样的特征,即使您从Some调用中看到零始于零的内存,在某些情况下,malloc会提供并非全零的内存。 这与ASLR有关?

回答 1 投票 0

如何设置免费策略?

我在生产环境(k8s 中的容器)中遇到了高内存使用率(看起来像内存泄漏),并想检查是否是由于“MADV_FREE”行为所致。 有没有办法

回答 1 投票 0

此代码不断出现“进程因资源限制而退出”错误

这是令人讨厌的代码,由于某些奇怪的原因似乎无法工作。 (错误是:**由于资源限制,进程退出**) 我在在线编译器上运行它。 (https://www.online-ide.com/

回答 1 投票 0

使用malloc的问题

我正在编写一个C代码,其中需要一个动态分配的具有多个维度(例如3)的数组。 一个最小的例子可能是(根据一些程序员兄弟的建议,我报告了完整的

回答 1 投票 0

为什么GCC的静态分析器会错误地警告存储在已分配内存块中的指向已分配内存块本身的指针可能会泄漏?

#包括 #包括 int main() { int ***new = malloc(sizeof(int **)); *new = malloc(sizeof(int *)); **new = malloc(sizeof(int)); ***新=2137; ...

回答 1 投票 0

C内存泄漏警告

#包括 #包括 int main() { int*** new = malloc(sizeof(int**)); *new = malloc(sizeof(int*)); **new = malloc(sizeof(int)); ***新=2137; 公关...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.