相关疑难解决方法(0)

堆栈和堆的内容和位置是什么?

编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,

  • 它们在哪里和它们(物理上在真实计算机的记忆中)?
  • 它们在多大程度上受操作系统或语言运行时控制?
  • 它们的范围是什么?
  • 是什么决定了它们的大小?
  • 是什么让一个更快?

language-agnostic heap stack memory-management dynamic-memory-allocation

7847
推荐指数
27
解决办法
145万
查看次数

指针是否在堆栈或堆中保存动态变量?

我希望得到一些明确的信息,我发现大多数消息来源都令人困惑.

例如,

int *a=new int;
Run Code Online (Sandbox Code Playgroud)

堆栈或堆中的"a",以及"*a"怎么办?我发现的大多数资源只涉及堆,我真的需要一个非常具体的答案.我真的很感激.

c++

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

new int[100] 和 new int[100]() 的区别;

如题

#include <iostream>
int main() {
    auto* a = new float[1000000];
    auto* b = new float[10]();
    for(auto i=0; i<1000000; i++){
        std::cout << "a" << a[i] << std::endl;
    }
    for(auto i=0; i<10; i++){
        std::cout << "b" << b[i] << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有什么不同?我试过两个输出都是零。

另外关于智能指针,如何确保它可以零初始化。

std::unique_ptr<int[]> p = std::make_unique<int[]>(100);
Run Code Online (Sandbox Code Playgroud)

c++ initialization new-operator unique-ptr c++11

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

C++ 大向量数组

我在使用 C++ 中的大量向量时遇到了一些麻烦。基本上我不需要一个包含 200 万个元素的数组,每个元素都是一个vector<int>(用于构建邻接列表)。

所以当我这样做vector<int> myList[10]时效果很好,但是当我这样做时vector<int> myList[2000000]它不起作用,我不知道为什么。

我试图这样做,unsigned long int var = 2000000; vector<int> myList[var];但仍然是同样的错误。(我不知道是什么错误,我的程序崩溃了)

如果你有任何想法,

谢谢

c++ arrays vector

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

存储动态创建的对象

假设我有一个类Obj,并且它们的实例是在运行时创建的,我可以不new这样存储它们吗?

Obj my_obj;

std::vector<Obj> my_vec;

my_vec.push_back(my_obj);
Run Code Online (Sandbox Code Playgroud)

还是我必须使用新的?

std::vector<Obj*> my_vec;
my_vec.push_back(new Obj);
Run Code Online (Sandbox Code Playgroud)

如果我的类中有指针怎么办Obj?另外,如果使用第二个选项,我需要清理所有东西吗?

c++ oop pointers

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