C++ 我试图了解内存分配是如何工作的以及何时发生的

C++ 我试图了解内存分配是如何工作的以及何时发生的,c++,memory,dynamic,heap,C++,Memory,Dynamic,Heap,所以!我是C++新手,我想了解一些基本的东西,比如内存分配。我需要知道内存是在运行时分配的还是在编译代码之后分配的,当运行时启动时,我的操作系统已经知道我需要x内存来运行程序。如果内存是在运行时分配的,那么在最后使用delete释放为动态变量分配的内存有什么意义呢。。。因为程序将结束,所有的内存都将被释放。对不起,我的英语不好,我是罗马尼亚人。谢谢大家! 内存是在运行时分配的。编译器不可能查看代码并始终知道需要多少内存,因此无论何时调用new或malloc,它都必须从操作系统请求这么多字节 你必

所以!我是C++新手,我想了解一些基本的东西,比如内存分配。我需要知道内存是在运行时分配的还是在编译代码之后分配的,当运行时启动时,我的操作系统已经知道我需要x内存来运行程序。如果内存是在运行时分配的,那么在最后使用delete释放为动态变量分配的内存有什么意义呢。。。因为程序将结束,所有的内存都将被释放。对不起,我的英语不好,我是罗马尼亚人。谢谢大家!

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


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

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

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

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

它在运行时,因此被称为动态

…当运行时启动时,我的操作系统已经知道我需要x内存来运行程序

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

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

在一个小的示例程序中,您经常会看到执行结束时的
delete
,这只是演示,当然,当程序执行结束时,内存会被释放

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

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

它在运行时,因此被称为动态

…当运行时启动时,我的操作系统已经知道我需要x内存来运行程序

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

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

在一个小的示例程序中,您经常会看到执行结束时的
delete
,这只是演示,当然,当程序执行结束时,内存会被释放


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

这是我不理解的。如果程序已经结束,为什么我要在主函数的和处释放内存?我不是说像。。运行中取消分配。。。我说的是为什么我需要删除主作用域末尾的动态变量?程序结尾和内存不会被释放吗?不是所有内存都会在
main
末尾被释放!一旦你不再需要它,你可以也应该这样做。在长时间运行的程序中,如果永远不给操作系统任何内存,而是不断地请求更多,那么当程序退出时,所有内存都会被释放,这将是致命的。但是现在就开始正确管理内存的习惯是很好的,或者当你开始编写长时间运行的程序时,你会发现它们到处都会泄漏内存。然后,当内存被完全释放时?哦,我现在明白了,你是说我需要养成习惯,在我不再需要它的时候释放内存。没事了,但我只是想知道运行时结束时内存是否会被释放,谢谢!对于建议和信息,这是我不理解的。如果程序已经结束,为什么我要在主函数的和处释放内存?我不是说像。。运行中取消分配。。。我说的是为什么我需要删除主作用域末尾的动态变量?程序结尾和内存不会被释放吗?不是所有内存都会在
main
末尾被释放!一旦你不再需要它,你可以也应该这样做。在长时间运行的程序中,如果永远不给操作系统任何内存,而是不断地请求更多,那么当程序退出时,所有内存都会被释放,这将是致命的。但是现在就开始正确管理内存的习惯是很好的,或者当你开始编写长时间运行的程序时,你会发现它们到处都会泄漏内存。然后,当内存被完全释放时?哦,我现在明白了,你是说我需要养成习惯,在我不再需要它的时候释放内存。没事了,但我只是想知道运行时结束时内存是否会被释放,谢谢!无论是建议还是建议information@Robert,很高兴能帮上忙。我看到,当我在控制台中制作一个蛇游戏时,内存使用量只会越来越大