gpt4 book ai didi

c - 返回一个 malloc 指针

转载 作者:太空狗 更新时间:2023-10-29 17:06:07 25 4
gpt4 key购买 nike

这是一个非常基本的问题,我对 C 中的内存传递有点不确定。

如果我有以下内容

CGPoint* tileForCoordinates (CGPoint position, short width, short height)
{
CGPoint *tileCoordinate = (CGPoint*)malloc(sizeof(CGPoint));
tileCoordinate->xTile = (position.xPosition / width);
tileCoordinate->yTile = (position.yPosition / height);

return tileCoordinate;
}

我想在另一个源文件或其他任何文件中调用它,我会声明一个指针和上面的指针并返回它吗?如果是这样,当我打电话时来自另一个类(class),例如

CGPoint *currentTilePosition = tileForCoordinates(curPosition, 50, 50);

malloc 返回的指针会怎样?它应该被释放还是什么故事? :)

最佳答案

回答“malloc() 返回的指针发生了什么?”

malloc() 声明的指针将是当前执行函数的栈帧中的一个值。当堆栈帧(以及 *tileCoordinate)在函数返回时超出范围时,该指针将不复存在。

但是,因为您将指针值返回给调用函数,它现在存在于当前堆栈帧中(返回后)。此值由变量 *currentTilePosition 引用。

malloc() 分配的内存是完全不同的故事;堆上存在动态分配的内存。您应该释放在执行分配的同一实现中分配的任何内存。这意味着在您使用完 currentTilePosition 后立即调用 free(),通常在同一个文件中。

关于c - 返回一个 malloc 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494176/

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