127得票7回答
为什么C++中存在delete[]语法?

每次有人在这里问关于delete[]的问题时,总会有一个相当普遍的回答:“这就是C++的做法,使用delete[]”。作为一个纯C背景的人,我不明白为什么需要有不同的调用方式。 使用malloc()/free()时,你的选择是获取一个连续的内存块的指针,并释放一个连续的内存块。在实现层面,有...

126得票1回答
Java中的静态分配 - 堆、栈和永久代

我最近一直在阅读关于Java中内存分配方案的内容,但是从各种来源中阅读到的信息让我产生了很多疑问。我已经整理好了我的概念,并请求您查看所有问题并对其进行评论。我知道内存分配是JVM特定的,因此我必须事先说一下,我的问题是针对Sun的。 类(由类加载器加载)进入堆的一个特殊区域:永久代。 与...

126得票4回答
在ARC下,我们需要在哪些情况下使用__autoreleasing所有权限定符?

我正在尝试完成这个谜题。 __strong是所有Objective-C可保留对象指针的默认值,例如NSObject,NSString等。它是一个强引用。ARC会在范围结束时通过-release来平衡它。 __unsafe_unretained等同于旧的方法。它用于没有保留可保留对象的弱指针...

126得票10回答
C++中正确使用栈和堆的方法?

我已经在编程方面有一段时间了,但大多数情况下都是使用Java和C#。我从来没有真正需要自己管理内存。最近开始编写C++程序,我有点困惑:什么情况下应该将东西存储在堆栈上,什么情况下应该将它们存储在堆上。 我的理解是,经常访问的变量应该存储在堆栈上,对象、不经常使用的变量和大型数据结构都应该存...

125得票2回答
Python有堆栈吗?内存是如何管理的?

Python中的变量和内存是如何管理的?它是否有堆栈和堆,并使用哪种算法来管理内存?鉴于这些知识,对于大量数据处理,有没有关于内存管理的建议?

122得票11回答
智能指针:谁拥有对象?

C++ 的重点在于内存所有权 - 即所有权语义。 动态分配内存的块的所有者有责任释放该内存。因此,问题实际上变成了谁拥有该内存。 在 C++ 中,指针类型所包含的原始指针的所有权是有文档记录的,因此在一个好的(我个人认为)C++ 程序中很少看到传递原始指针的情况(因为原始指针没有隐含的所有权,...

122得票9回答
为什么堆栈内存大小如此有限?

当你在堆上分配内存时,唯一的限制是可用的RAM(或虚拟内存)。它可以提供GB级别的内存。 那么为什么栈的大小如此有限(大约1MB)?有什么技术原因阻止你在栈上创建非常大的对象吗? 更新:我的意图可能不太清楚,我不想在栈上分配巨大的对象,也不需要更大的栈。这个问题只是出于纯粹的好奇!

120得票14回答
当仍有大量可用内存时,抛出“System.OutOfMemoryException”异常。

以下是我的代码:int size = 100000000; double sizeInMegabytes = (size * 8.0) / 1024.0 / 1024.0; //762 mb double[] randomNumbers = new double[size]; 异常: 引发了类...

119得票6回答
C++中向量的初始容量

在使用默认构造函数创建的 std::vector 中,capacity() 是什么?我知道 size() 为零。我们能否说明默认构造的向量不调用堆内存分配? 这样就可以使用单个分配创建具有任意保留的数组,例如 std::vector<int> iv; iv.reserve(234...

118得票7回答
静态内存分配和动态内存分配的区别

我想了解静态内存分配和动态内存分配之间的区别是什么?您能用示例来解释一下吗?