【发布时间】:2016-04-07 11:41:18
【问题描述】:
我正在尝试在 C 中重新编码 realloc,但我对 man 和我所做的 realloc 函数有疑问,因为它并没有完全按照 realloc 的人所说的那样做。
这是我的代码:
void *ft_realloc(void *ptr, size_t len) {
void *dup;
dup = ft_memalloc(len);
if (ptr) {
if (dup)
ft_memcpy(dup, ptr, len);
ft_memdel(&ptr);
}
return (dup);
}
但是那个人说:
realloc() 函数尝试将 ptr 指向的分配大小更改为 size,并返回 ptr。如果没有足够的空间来扩大 ptr 指向的内存分配,realloc() 会创建一个新分配,复制 ptr 指向的旧数据以适应新分配,释放旧分配,然后 >返回一个指向分配内存的指针。
问题是,我不知道如何“尝试更改 ptr 指向的分配的大小”(最好我想在不执行 strlen 的情况下执行 int,但通过将 ptr 的大小作为参数发送我的 realloc 函数)。我的代码中缺少这部分。 你能帮我吗? 最重要的是,如果 opensource link 这对我来说很奇怪,我看不到任何尝试“将大小 [...] 更改为 ptr”!
【问题讨论】:
-
更好的 realloc 代码源是scs.stanford.edu/histar/src/pkg/uclibc/libc/stdlib/…
标签: c heap-memory realloc