【问题标题】:Scope of dynamically allocated memory in function函数中动态分配内存的范围
【发布时间】:2013-01-23 04:22:24
【问题描述】:

我有一个函数

int*AllocatedMemory(int n){
    int*p=malloc(n*sizeof(int));
    return p;
}

分配的内存在离开函数后会失去作用域从而被释放吗?

【问题讨论】:

  • 这不是您可以在小型控制台应用程序中轻松检查的内容吗?
  • @Kippie 属于未定义行为的事物(尽管这不是)可以在一个编译器上工作,但不能在另一个编译器上工作。一个简单的测试是不够的。需要了解理论。

标签: c function scope malloc


【解决方案1】:

没有。用malloc分配的内存与作用域无关,需要用free释放(或者在程序终止时释放)。

【讨论】:

  • 这是否意味着使用malloc 分配的内存在强制free 或程序终止之前永远不会失去作用域?
  • @PrakashGautam 就是这个意思。
猜你喜欢
  • 1970-01-01
  • 2013-11-10
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2012-04-29
  • 1970-01-01
相关资源
最近更新 更多