问题标签 [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.

0 投票
4 回答
522 浏览

c++ - 如何在不进行动态内存分配的情况下将类的更多对象添加到向量中?

~

我想向AClassvector添加新对象m_Objects
有没有其他方法可以在不进行动态内存分配的情况下做到这一点?

0 投票
8 回答
79087 浏览

c - 对数组使用动态内存分配

我应该如何为数组使用动态内存分配?

例如,这里是以下数组,我从 .txt 文件中读取单个单词并将它们逐字保存在数组中:

代码:

这里 1000 定义了数组可以保存的单词数,每个单词可以包含不超过 15 个字符。

现在我希望该程序应该为它计算的字数动态分配内存。例如,一个 .txt 文件可能包含大于 1000 的单词。现在我希望程序应该计算单词的数量并相应地分配内存。

由于我们不能使用变量来代替 [1000],因此我对如何实现我的逻辑一无所知。请在这方面帮助我。

0 投票
1 回答
27965 浏览

memory-management - CUDA 在 __device__ 函数中分配内存

CUDA 有没有办法在设备端函数中动态分配内存?我找不到任何这样做的例子。

从 CUDA C 编程手册:

B.15 动态全局内存分配

从全局内存中的固定大小的堆中动态分配和释放内存。

CUDA 内核malloc()函数从设备堆中分配至少 size 个字节,并返回一个指向已分配内存的指针,如果没有足够的内存来满足请求,则返回 NULL。返回的指针保证与 16 字节边界对齐。

CUDA 内核free()函数释放 指向的内存ptr,该内存必须由先前的调用返回malloc()。如果ptrNULL,则忽略对 free() 的调用。使用相同的 ptr 重复调用 free() 具有未定义的行为。

给定 CUDA 线程通过分配的内存malloc()在 CUDA 上下文的生命周期内保持分配,或者直到它通过调用显式释放free()。它可以被任何其他 CUDA 线程使用,即使在随后的内核启动时也是如此。任何 CUDA 线程都可以释放由另一个线程分配的内存,但应注意确保不会多次释放同一指针。

0 投票
6 回答
516 浏览

c++ - 动态功能记忆?C++

我一直在阅读一些书籍,当谈到使用指针/动态内存(或堆或他们称之为的 w/e)的类/函数时,我开始感到困惑。

有没有人有一个简单的....像他们可以展示的简单示例,因为我使用的书籍使用了过于复杂的示例(大型类或多个函数),并且很难理解。无论如何,指针一直是我的弱点,但我理解 BASIC 指针,只是使用它们的类/函数有点令人困惑。

另外......你什么时候使用它们是另一个问题。

0 投票
10 回答
3582 浏览

c# - 新的永不失败?

在 C++ 中,我们通常会看到和编写如下代码,

但是在 C# 中,我很少看到这个:(至少我从未见过这个)

意味着,在 C# 中,我们很少检查是否new失败。为什么会这样?它与“在 C# 中,new 永远不会失败”有关吗?C#中是否有这样的事情new永远不会失败?

如果它失败了,那么为什么这种“检查”在 C# 中如此罕见?我不是在谈论OutOfMemoryException,毕竟是例外,而不是“检查”。我说的是编码风格。

0 投票
2 回答
4344 浏览

c - 在 C 中使用动态分配将文件读入多维数组

如何从具有如下结构的文件中读取数据到 C 中的多维整数数组中?

文件:

我需要使用动态分配将它放在“int** 矩阵”变量中。

更新:

我想要一个示例代码,我可以查看并研究下面列出的功能之间的关系:

  • 多维数组及其与指针的关系;
  • 内存的动态分配及其使用的一些解释;
  • 如何处理来自我们不知道大小的外部源的数据,如何将行/列分隔到 C 程序内部的数组中。

共享代码:

谢谢你。

0 投票
4 回答
440 浏览

c++ - C++ - 动态内存分配所需的内存

如果我想动态地为一个int对象分配内存,我可以这样做:

int *x = new int;

在这种情况下,我知道堆4-bytesint对象保留了内存。

但是,如果我有一个user-defined类(类型)并想动态分配内存,如下所示:

Car *c = new Car;

如何知道在堆上为Car对象保留所需的内存量?

谢谢。

0 投票
6 回答
1806 浏览

c++ - 动态内存分配“删除”

如果我为对象动态分配内存位置,int如下所示:

int *x = new int;

完成后,想要释放堆上的内存,我将执行以下操作:

delete x;

现在,如果我没有执行以下操作:

x = NULL;

x指向另一个地址吗?更新: another而不是many

说我没有做x = NULL,又做了一个 delete x;,会发生什么?

0 投票
6 回答
8175 浏览

c++ - C++ - 使用“new”在堆上分配内存

如果我有以下陈述:

int *x = new int;

在这种情况下,我在堆上动态分配了内存。换句话说,我现在有了一个对象的reserved内存地址int

在那之后说我做了以下事情:

delete x;

这意味着我freed up在堆上的内存地址。

说之后我又做了以下事情:

int *x = new int;

x指向它在被删除之前指向堆的同一个旧内存地址吗?

如果我以前这样做会怎样delete

x = NULL;

然后这样做:

int *x = new int;

x指向堆上的内存地址而不是旧地址吗?

谢谢。

0 投票
7 回答
7108 浏览

c++ - 不使用动态内存分配的 Pimpl 习惯用法

我们想在项目的某些部分使用 pimpl idiom。项目的这些部分也恰好是禁止动态内存分配的部分,这个决定不在我们的控制范围内。

所以我要问的是,有没有一种干净而好的方法来实现 pimpl idiom 而无需动态内存分配?

编辑
这里有一些其他限制:嵌入式平台,标准 C++98,没有外部库,没有模板。