问题标签 [dynamic-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++ - 在用 new 声明的向量中分配元素。C++
我正在尝试使用我想用 new 分配的大型 2D 向量(因为它很大)。
如果我说:
有用。但如果我说:
它不起作用,我收到错误:
错误 1 错误 C2679:二进制“=”:未找到采用“int”类型右手操作数的运算符(或没有可接受的转换)c:\Users\jsparger\Documents\My Dropbox\ARI\VME_0.01 \VME_0.01\V965.cpp 11 VME_0.01
显然我是 C++ 新手。有人可以解释我需要使用什么语法来执行此操作。mary 是一个指针,所以我明白为什么这不起作用,但是 *mary[5][5] = 由于“新”而不允许的任何内容,对吗?
谢谢您的帮助。这个向量是我现在要使用的,因为它似乎很容易让我的小 c++ 大脑理解,但是如果像这样的大向量是一个坏主意,请随时告诉我,等等。
谢谢一堆。
编辑:我误认为“因为新而不允许”。我不知道我在哪里误读了它,因为它显然有效,而且如果不这样做也没有多大意义。谢谢。
c++ - O* p = 新 O[5]; p 指的是什么?
到数组的第一个 O?
c++ - SomeClass* initialEl = new SomeClass[5];
SomeClass* initialEl = new SomeClass[5]; 一定要编译,假设 SomeClass 没有非公开声明的默认构造函数?考虑:
c# - new 语句如何分配堆内存?
您好,我写了一个类似这个示例的代码,我想知道每次用户单击 btnNew 时,堆和堆栈内存中发生了什么?例如,堆内存中的一个新块是否分配给这个网格?或者一个旧的块删除并且这个新块替换它?或者旧块保留在堆内存中并且新块分配给它。
这段代码是否在几次点击时分配了巨大的内存?**DataGrid 可以替换为我想知道的关于这种类型的新语句使用和内存分配的任何组件** 抱歉,我的英语不好!
.
pool - 数据结构的资源池
当实现一个基本的数据结构时,如stack
, queues
, linked list
et al. 我应该通过动态分配内存来创建资源池(节点)还是应该在每次需要节点时单独分配内存?
c++ - STL 擦除删除习语与自定义删除操作和 valgrind
这是使用 STL 算法而不是手写循环之类的重写一些旧作业的尝试。
我有一个名为 Database 的类,它包含一个Vector<Media *>
,其中 Media * 可以是(除其他外)一张 CD 或一本书。数据库是唯一处理动态内存的类,当程序启动时,它会读取如下格式的文件(有些简化),在读取条目时分配空间,并将它们添加到上面的向量 (v_) 中。
使用手写循环时,删除这些对象按预期工作: 编辑:对不起,我说得太早了,这实际上并不是一个“手写”循环本身。我一直在编辑项目以删除手写循环这实际上使用了 find_if 算法和手动删除,但问题一直有效。/编辑。
typedef vector<Media *>::iterator v_iter;
这应该是不言自明的——如果函子找到与参数匹配的 id,则函子返回 true,并且对象被销毁。这有效,valgrind 报告没有内存泄漏,但由于我想使用 STL,明显的解决方案应该是使用擦除删除成语,导致如下所示
然而,这“有效”但根据 valgrind 会导致内存泄漏,那么给出了什么?第一个版本运行良好,完全没有泄漏——而这个版本总是为我删除的每个 Media 对象显示 3 个“未释放”的分配。
c++ - 单个动态分配的极端内存使用
这是我在 Windows 7 下的 MSVC++ 2010 上做的一个简单测试:
这是常识还是我遗漏了什么?之前我总是在需要时动态创建对象。例如,网格中每个三角形的 new Triangle() 等。
单个实例的动态内存分配确实存在数量级的开销吗?
干杯
编辑:
刚刚在 Windows XP 上使用 g++ 编译并运行相同的程序:现在开销是 16 个字节,而不是之前观察到的 64 个字节!很有意思。
c++ - malloc 和 free 是如何实现的?
我想实现自己的动态内存管理系统,以便添加有助于在 C++ 中管理内存的新功能。
我使用 Windows (XP) 和 Linux (Ubuntu)。实现“malloc”和“free”等功能需要什么?我认为我必须使用最低级别的系统调用。
对于 Windows,我找到了以下函数:GetProcessHeap、HeapAlloc、HeapCreate、HeapDestroy 和 HeapFree。
对于 Linux,我没有发现任何用于堆管理的系统调用。在 Linux 上,malloc 和 free 是系统调用,不是吗?
谢谢
编辑:
C++ 不提供垃圾收集器,垃圾收集器很慢。有些分配很容易释放,但有些分配需要垃圾收集器。
我想实现这些功能并添加新功能:
* 每当调用 free() 时,检查指针是否属于堆。
*帮助垃圾收集。我必须存储一些关于分配块的信息。
* 使用多个堆(Windows 上的 HeapCreate/HeapDestroy)。我可以快速删除整个堆及其分配的块。
multidimensional-array - 多维数组的运行时分配
到目前为止,我认为以下语法无效,
但是今天我试过了,它奏效了!我运行了很多次以确保它不会偶然工作,甚至 valgrind 也没有报告任何段错误或内存泄漏!我很惊讶。它是 g++ 中引入的新功能吗?我一直使用一维数组来存储矩阵,方法是用正确的步长索引它们,就像在下面的程序中使用 A 所做的那样。但是这个新方法,和B一样,简单优雅,是我一直想要的。使用起来真的安全吗?请参阅示例程序。
PS。如果这很重要,我正在用 g++-4.4.3 编译它。
c - 从文本文件中读取所有内容 - C
我正在尝试从文本文件中读取所有内容。这是我写的代码。
这是用法
由于我是 C 新手,我想知道这段代码是否完美?您是否看到任何问题/改进?
使用的编译器:GCC。但是这个代码预计是跨平台的。
任何帮助,将不胜感激。
编辑
fread
这是带有和的更新代码ftell
。
我想知道这个函数的相对复杂性是多少?