malloc如何在编译时和运行时处理? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了malloc如何在编译时和运行时处理? [关闭]相关的知识,希望对你有一定的参考价值。
malloc是否用于在编译时指定 - 指针指向的缓冲区(数组)的最大大小,然后默认情况下在运行时和以后分配该最大大小的缓冲区 - 仅实际使用该部分缓冲区(尽管我们需要的全部大小(通过从用户等获取数据)?
如果以上是真的 - 那么这意味着malloc(沿着指针使用)实质上提供了一种方法来模拟(包括更高维度 - 但对于例如-2)2-D数组作为1-d指针数组,然后在编译时time指定要分配给每个单独指针的缓冲区的大小,即基本上完成相同的事情,即将它声明为在编译时在声明中指定的最大维度的二维数组 - 但只是允许以不同方式对其进行建模/可视化。两者都在声明语句的运行时分配了默认的最大大小 - 数组类型声明,而在malloc语句的运行时指针+ malloc类型(我认为在这两种情况下都使用这个大小信息来计算堆栈的大小+运行所需的堆总和)。
那是在指针+ malloc中,一旦编译器看到这个信息(每个指针使用malloc的最大缓冲区大小)在编译时可用 - 编译可以通过,因为它具有默认情况下可以分配多少内存的信息(并且还)使用该信息来计算函数运行所需的堆栈大小+堆总和(如果没有malloc - 那么它指向单个元素)。稍后在运行时 - 在运行malloc语句之后分配最大大小的缓冲区,以便稍后用作输入需求。
有一个原因,为什么使用malloc
,calloc
和realloc
分配内存称为dynamic memory management。此上下文中的动态意味着在运行时发生的动态。这不会在编译时发生。
如果以上是真的......
由于事实并非如此,因此不能从中得出。
malloc
是标准C库的一个功能。
所有函数都在运行时调用。
编译时唯一发生的事情就是创建一个对malloc
的函数调用
以上是关于malloc如何在编译时和运行时处理? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章