相关疑难解决方法(0)

为什么两个不同的概念都被称为"堆"?

为什么运行时堆用于C风格语言中的动态内存分配,数据结构都称为"堆"?有一些关系吗?

c++ heap terminology heap-memory

144
推荐指数
6
解决办法
2万
查看次数

免费商店"堆"一词的起源是什么?

我试图找到免费商店通常被称为堆的官方(或足够好)的原因.

除了它从数据段的末尾增长之外,我无法想到一个很好的理由,特别是因为它与堆数据结构几乎没有关系.

注意:很多人都提到它只是一大堆没有组织的东西.但对我来说,术语堆物理意味着一堆物理依赖于彼此的东西.你从下面拉出一个,其他一切都在它上面坍塌,等等.换句话说,对我来说,堆松的声音组织起来很糟糕(例如,最新的东西在上面).这并不是一个堆在大多数计算机上实际工作的方式,但如果你把东西放在堆的开头然后增长它我想它可以工作.

heap terminology

22
推荐指数
3
解决办法
3789
查看次数

动态内存和"普通"内存之间的差异

分配给new运算符的内存与通过简单变量声明分配的内存之间有哪些技术差异,例如int var?c ++是否有任何形式的自动内存管理?

特别是,我有几个问题.首先,由于使用动态内存,您必须声明一个指针来存储您使用的实际内存的地址,动态内存不会使用更多内存吗?除非你声明一个数组,否则我不明白为什么指针是必要的.

其次,如果我要做一个像这样的简单函数:

int myfunc() { int x = 2; int y = 3; return x+y; }
Run Code Online (Sandbox Code Playgroud)

...并且调用它,一旦它的存在范围结束,函数分配的内存是否会被释放?动态记忆怎么样?

c++ memory memory-management

11
推荐指数
2
解决办法
2725
查看次数

动态内存分配问题

当您使用指针在堆上分配动态内存时,

char *buffer_heap = new char[15];
Run Code Online (Sandbox Code Playgroud)

它将在内存中表示为:

 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««þþþ
Run Code Online (Sandbox Code Playgroud)

为什么最后没有一个NULL终止字符而不是««««««««þþþ?

c++ dynamic-memory-allocation visual-c++

11
推荐指数
2
解决办法
2782
查看次数

堆栈溢出 - 静态内存与动态内存

如果int m[1000000];在C/C++的main函数内部编写,它将在堆栈溢出时收到运行时错误.相反,如果你vector<int> m;在那里写,然后push_back 1000000元素,它将运行正常.

我很好奇为什么会这样.他们都是本地记忆,不是吗?提前致谢.

c++ stack-overflow stack

4
推荐指数
3
解决办法
2329
查看次数