问题标签 [realloc]

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 投票
3 回答
738 浏览

performance - 实现动态堆栈类型的最佳方法?还是我在滥用 realloc?

我正在使用一种没有本机堆栈类型的晦涩语言,所以我实现了自己的。现在,在网上阅读我发现了一些不同的方法来做到这一点。

这是我的实现(伪代码)

现在有些人说在弹出一个值后使用 realloc() 调用来调整堆栈的大小对性能不利,所以我有几个问题:

  1. 最好只使用 malloc 增长堆栈然后在程序结束时释放它?
  2. 要调整堆栈大小(推送),最好增加 4 个字节或更多?
  3. 通过在填充时分配的内存加倍来增加堆栈是最佳实践吗?
  4. 你对上面的代码有什么想法?
0 投票
2 回答
1288 浏览

memory-management - 使用 gcc/linux 就地重新分配

有这样的事吗?我的意思是一些函数,如果可能的话,它会重新分配内存而不移动它,或者如果不可能的话,什么也不做。在 Visual C 中有 _expand 可以满足我的要求。有人知道其他平台的等价物,特别是 gcc/linux 吗?我最感兴趣的是在可能的情况下就地缩小内存(标准 realloc 可能会移动内存,即使它的大小减小,以防有人问)。

我知道没有标准的方法可以做到这一点,我明确要求依赖于实现的肮脏的hackish技巧。列出任何你知道在某处有效的东西。

0 投票
2 回答
1031 浏览

c - 重新分配实现

我正在编写一个简单的基于链表的内存管理器,格式如下:

...Header|Block|Header|Block... 带有已使用和空闲列表。

如果要求 realloc() 函数减小块的大小,是否可以用新创建的块的标头覆盖一些尾随字节?我读过的文档表明这是“未定义的行为”,但应用程序是否依赖于仍然存在的数据?

0 投票
4 回答
9530 浏览

realloc - 如果失败,realloc 会释放前一个缓冲区吗?

如果 realloc 失败并返回 NULL 是前一个缓冲区被释放还是保持不变?我没有在手册页中找到那条特定的信息,我很不确定该怎么做。如果内存被释放,那么双重释放可能会有风险。如果不是,则将发生泄漏。

0 投票
6 回答
5012 浏览

c - 如果新大小更小,可以重新分配指针吗?

我想知道 C 或 C++ 标准是否保证在以较小(非零)大小调用 realloc 时指针不会更改:

基本上,操作系统可以自行决定,因为我们释放了一个大内存块,他想利用所有重新分配来对内存进行碎片整理,并以某种方式移动 ptr2 吗?

0 投票
4 回答
2100 浏览

c - 为什么 Win32 HeapReAlloc() 会改变值?

我正在使用 win32 API 在 C 中编写一个应用程序。当我尝试使用 HeapRealloc() 函数扩大数组的大小时,它会更改数组中的当前值,而不是复制它们。我用来重新分配内存的代码:

这是断点时数组的状态。feed 数组显示当前数组状态。临时数组显示新的重新分配的数组状态(这是不同的)。

饲料数组:

feedArray http://www.freeimagehosting.net/uploads/526b0b2172.jpg

临时数组:

tempArray http://www.freeimagehosting.net/uploads/17858f2e7e.jpg

请帮忙.. :\

链接到MSDN上的功能说明

0 投票
8 回答
31850 浏览

c - 由于内存导致重新分配失败时如何处理?

问题说明了一切,但这里有一个例子:

如何处理内存不足而不是 NULL 我的所有数据?

编辑 - 让我们假设可以做一些事情,例如在某处释放一些内存,或者至少告诉用户“你不能这样做 - 你内存不足”。理想情况下,我想留下分配在那里的东西。

0 投票
9 回答
39517 浏览

c - malloc(0) 返回什么?

返回什么malloc(0)

答案是否相同realloc(malloc(0),0)

Linux GCC 的输出:

输出每次都在变化malloc(0)。这是标准答案吗?除了学术研究之外,为什么会有人对获得这样的指针感兴趣?

编辑:

如果malloc(0)返回虚拟指针,那么以下如何工作:

编辑:

以下代码为每次迭代输出“可能”。为什么它不应该失败?

0 投票
5 回答
6924 浏览

c - realloc 移动内存块时如何更新其他指针?

realloc 参考说:

该函数可以将内存块移动到新位置,在这种情况下,将返回新位置。

这是否意味着如果我这样做:

如果 realloc 移动块,那么 cptr 可能会变得无效?

如果是,那么 realloc 是否以任何方式发出信号,它会移动块,以便我可以做一些事情来防止 cptr 变得无效?

0 投票
7 回答
1726 浏览

c - 释放字符指针

我有一个在程序执行期间被多次调用的函数。在所述函数中,我有一个动态字符指针,我多次调整它的大小。

我的问题是:我需要在函数结束之前释放这个指针吗?

我还应该注意,我试图释放指针,但是,当我这样做时, gdb会给我警告。