问题标签 [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 投票
11 回答
309 浏览

c - 如何确保调用者传递了 malloc 的指针?

我有一个函数,它将作为参数给出的指针重新分配给新大小。现在,问题在于 - 根据手册页 -realloc需要一个已由malloccalloc之前返回的指针。

如何确保调用者传递一个满足这些要求的指针?似乎没有内置的 C 机制(如类型限定符或其他东西)可以这样做。

现在,在我重组我的 API 之前(因为我认为现在的功能不够健壮) - 你能确认我没有错过任何东西吗?

提前致谢。

编辑: 一种解决方案显然是函数中使用 malloc 。问题在于调用者没有“看到”分配。因此,我需要在文档中明确说明他必须释放指针。这比期望他们提供一个 malloc 的指针(这意味着调用者必须释放它)更糟糕。

我真正想要的是在编译时阻止滥用的东西。那,还有一匹小马。;-)

0 投票
4 回答
11943 浏览

c - realloc() 失败并返回 NULL 时的正确用法是什么?

谁能总结一下正确用法是realloc()什么?

realloc()失败的时候怎么办?

从我目前看到的情况来看,如果realloc()失败,你必须使用free()旧指针。真的吗?

这是一个例子:

假设realloc()在线失败3。我在网上做正确的5free()ptr

0 投票
5 回答
4869 浏览

c - realloc 如何知道要复制多少?

realloc 如何知道原始数据的大小?

所以,如果实现是这样的:

我意识到这不是最初的实现,并且 realloc 并不总是免费的,但是当它这样做时,它复制了多少?

编辑:感谢您的回答。但是我怎样才能在我的代码中使用 malloc/free/.. 实现 realloc?

0 投票
4 回答
92607 浏览

c++ - 你如何在 C++ 中“重新分配”?

我怎样才能realloc在 C++ 中?语言中似乎缺少它 - 有newdelete没有resize

我需要它,因为当我的程序读取更多数据时,我需要重新分配缓冲区来保存它。我不认为deleteing 旧指针和newing 一个新的、更大的指针是正确的选择。

0 投票
2 回答
276 浏览

c - realloc:反向指针数组?

我编写了一个相当简单(ish)的堆栈实现,如果需要,它会自动增长其内部数组缓冲区。

为此,我自然会使用realloc - 它可以工作,但是,所有数组元素在 realloc() 调用之后都是反向排序的。

有问题的代码:

此示例将触发所述行为:

我真的对此一无所知。请帮忙!

0 投票
5 回答
3516 浏览

c - 如果没有顺序的内存空间,realloc 会做什么?

realloc用于动态重新分配内存。

假设我使用该malloc函数分配了 7 个字节,现在我想将其扩展为 30 个字节。

如果内存中没有 30 字节的连续(单行连续)空间,后台会发生什么?

是否有任何错误或将部分分配内存?

0 投票
7 回答
11184 浏览

c - 简单的 c malloc

malloc虽然 C/C++ 的/有许多不同的复杂实现free,但我正在寻找一种非常简单且(尤其是)小的,适用于固定大小的缓冲区并支持realloc. 不需要线程安全等,我的对象很小,大小变化不大。有什么可以推荐的实现吗?

编辑

我将使用该实现作为接收器的通信缓冲区来传输可变大小的对象(接收器未知)。分配的对象不会存活很长时间,但可能同时使用多个对象。

由于每个人似乎都推荐标准 malloc,我也许应该重新提出我的问题。我需要的是在缓冲区之上“最简单”的 malloc 实现,我可以开始针对自己的需要进行优化。也许最初的问题不清楚,因为我不是在寻找优化的 malloc,而只是寻找一个简单的 malloc。我不想从 glibc-malloc 开始并扩展它,而是使用轻量级的。

0 投票
1 回答
1024 浏览

c - 使用 realloc 收缩

我在这个问题中遇到了一小段代码,想知道,

realloc()当指向的内存空间缩小时,该函数是否可以将内存块移动到另一个位置?

如果可能,在什么条件下,我可以期望b有一个不同于 in 的地址a

0 投票
2 回答
1537 浏览

c - realloc 可以在左侧缩小我的数组(仅限 C)吗?

我想移动我记忆中的大量数据。不幸的是,这些数据被保存为一个数组,我无法改变它。我不能使用循环数组,因为我不想更改的几个 fortran 方法也使用相同的内存。最重要的是,在移动之间非常频繁地访问数组。所以我可以这样做:

这应该可以正常工作,但看起来很浪费;)。如果我可以告诉我的编译器带走缩小数组左侧的数据,我的数据会在内存中爬行,但我不必进行任何复制。像这样:

所以基本上我想用一个指向 的指针来结束,array+1释放它剩下的 4 个字节。我玩过free()malloc()但它没有用......我知道 realloc 也可能导致 memcpy 调用,但不是每次!所以它可以更快,不是吗?

0 投票
4 回答
35155 浏览

c - realloc 会覆盖旧内容吗?

当我们通过 重新分配内存时realloc(),之前的内容会被覆盖吗?我正在尝试制作一个程序,每次我们将数据输入到其中时都会重新分配内存。

请告诉我有关通过 realloc 分配内存的信息,例如它是否依赖于编译器?