【发布时间】:2017-08-31 15:03:35
【问题描述】:
因此,我正在使用一个在大脑图像 I/O 方面已有十多年历史的“标准”库。我遇到了这个功能:
nifti_image* nifti_image_read( const char *hname , int read_data ){
nifti_image* nim;
...
<<<some IO operations>>>
...
return nim;
}
我的问题是,这个函数怎么会返回一个指向自动变量的本地指针?由于nim指针超出范围并且应该在函数完成后删除,这种做法是否被禁止?
我已经阅读了this 的问题,但无法得到答案:
【问题讨论】:
-
它按值返回 num 的副本。据推测,“一些 IO 操作”会使用一些数据的地址加载 num,这些数据的生命周期可能超过“nifti_image_read()”的生命周期。这很好,然后,返回它的地址也是如此。
-
@ThingyWotsit 我对按值返回与按引用进行了一些研究,现在明白了。谢谢。
标签: c memory-management stack automatic-storage