问题标签 [dynamic-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++ - 动态数组超出范围时是否释放内存
我正在为函数中的数组动态分配内存。我的问题是:一旦函数完成运行,内存是否被释放?
代码:
c - 动态分配的结构数组中的 SegFault,C
这是从 parser.c 源文件中调用的函数。
我首先像这样调用create_FigArray ...
我在这里没有seg错误......但后来我打电话......
参数实际上是通过变量传递的,但我只是想表明它们是正确的参数,并举例说明传递了什么值。无论如何它击中
并停止.. segfault 必须在这里发生,但为什么呢?!
请帮助,解释并展示如何解决这个问题。谢谢你。
c - 使用灵活的数组成员释放动态分配的结构
我有一个定义如下的数据结构:
数据数组的初始大小必须为 1,但允许增加。
为struct varr *
我使用的分配空间时
当重新分配空间以增加我使用的数据数组的大小时
我的问题是“我应该如何释放分配给这个结构的内存?”
我尝试了一个简单的free(p);
方法,但这会根据 memcheck 导致内存泄漏。我为此目的构建数据的方式或分配内存的方式是否存在根本性错误?
==注意==
我通过使用指针而不是显式声明的数组解决了这个问题。但是,我仍然会对为什么这不起作用的简明答案感兴趣。
assembly - 在汇编中制作动态数组
如何在汇编中的程序中间制作一个动态数组?我试过这段代码,但没有用
你知道解决这个问题的任何方法吗?
c - 使用 malloc() 进行多个输入?
好吧,我知道malloc
或者calloc
可以用于动态分配,但是作为 CI 的新手,不知道如何使用我分配的用于输入多个输入的内存,例如 TC++ 示例,我们有这个代码
在这样的代码中,我们将 Hello 放置到我们现在分配的内存中,这应该会给我们留下 4 个更多的字符空间,我们应该如何向这些空间添加数据。
当用户被问及输入数量时,我想实现这个想法,他让他说 10 或 100,然后程序输入数据并存储它们并将该数据打印到屏幕上。
c++ - 如何在 C++ 中创建具有动态维度大小的数组?
我正在寻找创建一个数组(或向量?)来表示一些文件。
基本上,我将拥有可变数量的输入文件。每个文件的每一行都可以被视为一个自定义对象(我称它们为“符号”)。每个文件中有可变数量的行。
所以我想进行这种表示:
数组[x][y]
其中 x 将引用该文件,而 y 将引用该文件中的行。
我在 stackoverflow 上看到了一些主题,这些主题提出了一些建议
这在构建时给了我一个奇怪的错误消息:
有什么想法我会怎么做?或者在读回以进行进一步处理之前,我是否会更好地将信息暂时存储在文件中?
c++ - 动态对象的析构函数异常
我遇到了这个我通常会用“不要那样做”来驳回的边缘问题,但我在标准中找不到令人满意的答案,如果有人能指出原因,我将不胜感激:
假设我有一个在析构函数中引发异常的类:
如果我删除该类的动态分配实例,动态分配的内存会发生什么情况?
是否调用了释放函数?为什么?我可以通过添加operator delete(p);
到catch
块中使此代码正确吗?
我用 GCC 进行了一个小测试,它似乎不会自动释放内存。(将此与构造函数中的异常进行对比,在这种情况下,保证会调用释放函数(如果存在)。)
c++ - 分配初始化的、对齐的内存
我正在编写一个程序(在 C++ 中),我需要在其中分配起始地址应与缓存行大小对齐的数组。当我分配这些数组时,我还希望内存初始化为零。
现在我使用 posix_memalign 函数让它工作。这适用于获取内存对齐的数组,但数组未初始化。有没有更好的函数可以用来在初始化数组时将它们归零,还是我只需要编写一个单独的循环来为我做这件事?
c - 用于 C 中动态分配内存的互斥锁
我正在阅读Thread Synchronization
《Unix 环境中的高级编程》一书。
在本节中,有一个将互斥锁与动态分配的对象一起使用的示例。我对此也有一些疑问。
在这里,我分享发生的事件时间表(从上到下)以解释我的疑问:
- 已创建线程 1。
- Thread1 创建一个 mutex var 对其进行初始化并将其放在全局列表中,以便其他人可以使用它。
- 现在 Thread1 获得了一个锁来使用共享数据结构,比如说
ds
。Thread1 需要做大量的工作ds
,即 Thread1 将长时间获取这个锁。 - 现在,虽然 Thread1 仍然获得了锁,但 Thread2 被创建了。
- 现在Thread2也想用ds。
- 所以 Thread2 必须首先增加显示对 ds 的引用的计数器增加。为此(根据本书),它首先需要
mutex_t
在增加计数之前使用相同的变量获取锁。 - 但是由于 Thread1 已经在这个变量上获得了锁
mutex_t
,所以当 Thread2lock()
在递增计数之前调用时,它必须等到 Thread1 解锁锁。
疑点:
- 关于他在谈论哪个全局列表(意味着只是制作任何列表并将其引用传递给所有线程或任何特定列表)?
- 当 Thread1 创建锁变量时,它将计数设置为 1。然后 Thread2 正在等待将此计数增加到 2。但是假设在执行当前工作之后 Thread1 不需要使用 ds。因此,在解锁之前,它也会减少计数或先解锁,然后
foo_rele()
再次调用锁定并减少计数。现在有可能在 Thread2 增加计数之前,Thread1 减少它。如果是(根据我),那么我的数据结构将被破坏?所以我认为这本书的这个例子有一点错误。如果我们使用不同的 mutex_var 来增加计数会更好吗?
c++ - 在动态中重复分配一个 char 数组会导致问题吗?
C++ 中的伪代码
所以基本上,数据每次都被重复分配给一个不同大小的新数组。尽管每次之前的分配总是首先被取消分配。
这会导致内存碎片吗?
我对 C++ 中的内存管理不是很熟悉;我的直觉告诉我这不是一个好主意。