相关疑难解决方法(0)

C++中的堆栈或堆中的全局内存管理?

如果我在C++应用程序中全局声明数据结构,它是否会消耗堆栈内存或堆内存?

例如

struct AAA
{

.../.../.
../../..
}arr[59652323];
Run Code Online (Sandbox Code Playgroud)

c++ stack memory-management

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

堆栈/堆上的对象创建?

以下代码在堆栈上创建一个对象:

Object o;
Run Code Online (Sandbox Code Playgroud)

在堆上创建对象时,我们可以使用:

Object* o;

o = new Object();
Run Code Online (Sandbox Code Playgroud)

而不是:

Object* o = new Object();
Run Code Online (Sandbox Code Playgroud)

当我们将堆对象创建分成两行并在第二行(o = new object())上调用构造函数时,这是否意味着在第一行(Object* o)中指针是在堆栈上创建的?因此Object o将对象放在堆栈上,而Object* o将指针放在堆栈上的未来对象中?

我的第二个问题涉及两行代码是否在类之外调用.我最近读过(堆栈或堆中的C中的全局内存管理?)全局变量不包含在堆栈/堆中但实际上是内存的另一部分?如果是这种情况,会Object* o创建一个指针,它将位于内存的其他部分,并指向堆对象?

c++ heap stack initialization

50
推荐指数
4
解决办法
8万
查看次数

不同的程序是从公共堆还是从单独的堆中获取内存?

我有点困惑,如何在linux上的glibc将其内存分配给各种程序.这些是几个问题:

  1. 它是从公共堆分配的(即在linux中的所有进程中是否存在公共堆),或者是否为系统中的每个进程分配了一个堆.

  2. 还假设我正在编译一个静态库,它最终静态链接到主进程,它将如何获取其内存?它是否已经与其他堆链接(因为我们已经编译它)或者将从主进程的堆中获取其内存.

linux malloc glibc

8
推荐指数
1
解决办法
1626
查看次数

堆/堆栈和多个进程

假设我有两个正在运行的进程p1,p2作为我的应用程序的一部分。

假设p1开始运行时先执行f1()函数,然后f1()调用f2()。f2()的调用使p2开始执行

我要确认的是:-1)我们是否为不同的流程使用了单独的堆栈?

2)我们有用于不同进程的单独堆吗?还是不同的进程共享同一堆?

3)我们知道,对于32位操作系统,每个进程的虚拟内存大小为4GB。对于每个具有4GB虚拟内存的进程,这4GB也会划分为堆,堆栈,文本,数据

谢谢。

memory memory-management process

2
推荐指数
1
解决办法
3941
查看次数

标签 统计

c++ ×2

memory-management ×2

stack ×2

glibc ×1

heap ×1

initialization ×1

linux ×1

malloc ×1

memory ×1

process ×1