内存分配是如何工作的?何时进行



我是C++的新手,我正在努力理解内存分配。我想知道内存是在运行时分配的还是在代码编译后分配的,当运行时启动时,我的操作系统就会知道我需要X内存来运行程序。如果内存是在运行时分配的,那么在最后使用delete释放为动态变量分配的内存有什么意义?因为程序将结束,所有内存都将被释放。

我需要知道内存是在运行时分配的还是在代码编译后分配的

它在运行时,因此被命名为动态。

。。。当运行时启动时,我的操作系统就会知道我需要x内存来运行程序

不,内存是在运行时分配的,系统无法知道编译时需要多少内存,因此得名dynamic

如果在运行时分配内存,那么在最后使用delete释放为动态变量分配的内存有什么意义。。。因为程序将结束,所有内存都将被释放

在一个小示例程序中,您经常在执行结束时看到delete,这只是令人沮丧的,当然,当程序执行结束时,内存无论如何都会被释放。

但你必须记住,正常的程序是更大的。内存被分配和释放,程序将继续运行,其中一些会持续很长一段时间,如果没有内存管理,在某些情况下可能会出现非常错误的情况。

内存是在运行时分配的。编译器不可能查看您的代码并始终知道需要多少内存,因此每当您调用new或malloc时,它都必须从操作系统请求那么多字节。

你必须释放内存的原因很简单,因为计算机上的内存是有限的,你不应该使用超出你需要的内存。如果你使用的数量超过了机器上的可用数量,你将无法再进行分配。

最新更新