gpt4 book ai didi

c - 内存重新分配风险

转载 作者:行者123 更新时间:2023-12-01 11:54:16 25 4
gpt4 key购买 nike

我需要知道,使用 realloc() 函数获取额外内存是否有任何风险?

例如,我将一些流存储到 char* 变量中。问题是我们不能在一开始就指定输入流的最大大小,所以我们需要不时地扩展内存区域。

我的问题是:重新分配内存会导致我重新分配的变量的数据丢失吗?

最佳答案

如果我正确使用它会丢失数据吗?

不,使用 realloc 时不应该有任何数据丢失,它在语法上应该与下面的操作相同。

new_memory = malloc (new_size);

if (new_memory != NULL) {
memcpy (new_memory, old_memory, old_size < new_size ? oldsize : new_size);
free (old_memory);
}

return newp;

如果重新分配失败怎么办?

如果重新分配失败(即无法分配新内存),指向 old_memory 的指针仍然有效,所以请不要这样做:

my_memory = realloc (my_memory, new_size); 

/*
* if the allocation fails you will lose the pointer to your memory,
* which will make you:
* a) lose your data
* b) have a memory leak
* */

标准对 realloc 有什么看法?

关于c - 内存重新分配风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com