问题标签 [static-memory-allocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Visual Studio C++ 0xC0000005 错误:被内存分配混淆
我是一名 Java 开发人员,但现在我需要一个 C++ 库,而我对这种语言的经验并不丰富。特别是,我总是对指针、引用和内存分配感到困惑。我认为这就是我正在开发的矩阵类中出现错误的原因。
主要代码:
matrix.cpp
有趣的代码:
完整matrix.hpp
文件:
此类基于矩阵示例中给出的示例。
错误显示“0xC0000005:访问冲突读取位置 0x5820A694”。所以我猜测内存分配是错误的和/或有一个超出范围的数组和/或我弄乱了“&”运算符。
编辑:我得到以下跟踪:
- 这个 0x00dffe24 {values={ size=9 } rows=3 } 矩阵 *
所以,矩阵确实存在,但由于某种原因我得到了错误。
c++ - 在堆上分配指针的原因是什么?
可能这个问题已经被问过了,但我找不到。如果您看到了什么,请重定向我。 问题: 使用有什么好处:
超过
通过阅读其他主题,我了解到第一个选项在堆栈上分配一个空间并使指针指向它,而第二个选项在堆上分配一个空间并使指针指向它。但是我还读到第二个选项很乏味,因为您必须使用删除来释放空间。那么为什么要使用第二种选择。我是菜鸟,所以请详细解释。
编辑
和
都编译并给我“wouf !!!”。那么为什么要使用“new”关键字呢?
c++ - 测量静态、堆和堆栈内存?(c++, Linux - Centos 7)
我想分别测量堆栈、堆和静态内存,因为我对每一个都有一些限制。
为了测量堆内存,我使用了 valgrind->massif 工具。Massif 也应该可以测量堆和堆栈内存,但它显示出奇怪的结果:
没有 --stacks=yes 的最后一个快照提供了总(B)=0,有用的堆(B)=0,额外的堆(B)=0(所以一切都很好)
最后一个带有 --stacks=yes 的快照提供了 total(B)= 2,256,有用堆(B)=1,040,extra-heap(B)=0,stacks(B)=1,208(即使它是相同的命令和相同的二进制测试...不知道为什么...)
所以最后我需要一个工具来测量 c++ 二进制文件使用的堆栈和静态内存,欢迎提供一些帮助:)
谢谢你的帮助 !
- - - - - - 编辑 - - - - - - -
除了 Basile Starynkevitch 评论之外,为了解释我对静态、堆栈和堆内存的含义,我从 Dmalloc 库文档中获取了它:
静态数据是其存储空间编译到程序中的信息。
/li>堆栈数据是在运行时分配的数据,用于保存函数内部使用的信息。该数据由系统在称为堆栈空间的空间中管理。
/li>堆数据也在运行时分配,并为程序员提供动态内存能力。
/li>
c++ - C++中的struct是如何分配内存的?是动态内存分配还是静态内存分配?
我对 C++ 编程很陌生。所以我只想知道结构的内存分配是静态的还是动态的?这是我基本上拥有的代码。
c++ - 在 C++ 中运行时输入数组的大小然后初始化它?
伪代码:
为什么这没有给出错误?如果允许这样做,为什么我们需要 new 和 delete 运算符?我能想到的唯一区别是 new 将在堆中分配内存,这将在堆栈中分配内存。
c++ - 字符指针数组内存分配
如何为 char 指针数组和双指针完成内存分配。
在编译器给出的上述代码输出中是-nowledge
我的问题是,如何将值分配给指针 p 以及如何递增。
c++ - 在没有动态内存的世界中我需要虚拟析构函数吗?
当对象(可能)从基类指针中析构时,需要虚拟析构函数。
考虑一个在嵌入式系统中常见的没有动态内存的程序。在这里,使用new
或delete
触发链接器错误,因为未实现所需的底层分配器。因此,开发人员只使用静态分配的对象(在 bss/data 部分)或自动分配的对象(通常在堆栈上)。
在这样的系统中,是否存在真正需要虚拟析构函数的情况?(假设没有人感到无聊并在某个指针上手动调用析构函数。)
在我看来,静态和自动分配总是调用正确的析构函数。我想念什么吗?是否有任何角落案例?与 unique_ptr 和自定义删除器一起使用的静态对象池怎么样?
c++ - 如果我可以创建一个数组,为什么我需要动态内存分配?
我正在阅读有关动态内存分配和静态内存分配的信息,并发现以下有关动态内存分配的信息:
在前面章节中看到的程序中,所有内存需求都是在程序执行之前通过定义所需的变量来确定的。但是可能存在程序的内存需求只能在运行时确定的情况。例如,何时需要的内存取决于用户输入。
所以我用 C++ 编写了以下程序:
这个程序有效。我不明白它是如何工作的。这里的大小是什么时候确定的?在这种情况下如何分配向量?
c++ - 在运行时给定内存静态分配的变量
这个问题已经困扰了我很长一段时间了。
现在,如果输入的数字是偶数,则将创建一个双精度数,否则将创建一个字符。n 的值是在运行时给定的,因此内存在运行时分配给 double/char。但是不仅动态创建的变量在运行时分配内存吗?
c++ - c++中vector的静态分配和动态分配有什么区别?
我知道以下情况的区别:
对于情况 1,数组的内存是在堆栈上分配的。
对于情况 2,在堆上分配内存并返回一个指针。
但是下面两个声明有什么区别,因为向量内存总是在堆上分配