gpt4 book ai didi

c - 如何在 C 中复制指针?

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:16 26 4
gpt4 key购买 nike

我想 malloc 一些内存,在该内存上运行一些操作,然后让这些操作的结果持久化。例如,如果我有一个二维持久数组,我想对其进行逐行更新。

void update(int **persistent, int row, int rowSize) 
{
int *temp = (int*) malloc(sizeof(int) * rowSize);
//...do stuff with temp
persistent[row] = temp
}

在 C 中执行此操作而不必将 temp 的内容深度复制到 persistent[row] 的最安全方法是什么?如果我在不释放临时文件的情况下按照上面键入的方式执行此操作,即使我稍后正确释放持久性文件,也会导致内存泄漏吗?

编辑:我有一个相关的问题是:如果我尝试在函数末尾释放(临时),我注意到即使 persistent[row] 保持对临时数据的引用,内存也会被释放。这是不是因为 malloc/free 的设计方式,所以每当调用指针上的 free 时,都会释放内存而不检查对该内存的其他事件引用?

最佳答案

如果您没有正确释放 persistent[row] 中的旧指针(如果它不是 NULL),那只会导致内存泄漏。只要在用 temp 覆盖旧指针之前释放旧指针,只要正确(逐行)释放 persistent 就不会有任何问题。

关于c - 如何在 C 中复制指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664068/

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