有关在C语言中使用内存的问题

时间:2018-10-06 15:15:59

标签: c memory memory-management

让我们假设以下代码:

#include<stdlib.h>

void func1()
{
    int a=2;
    int b=3;
    int c=4;
}

void func2()
{
    int *ptr; 
    ptr = (int *)malloc(3 * sizeof(int)); 
}

int main()
{
    func1();
    printf("Point 1\n");
    func2();
    printf("Point 2\n");
}

我的问题是:

  • 为变量a,b分配的内存会发生什么情况 执行
    之后,再执行c和c(它们是“ func1”中的局部变量) “ func1”的主要功能是什么?存储这些所需的空间 变量可以被其他程序重用吗?
  • 为“ ptr”分配的内存会发生什么情况(即 执行“ func2”后是否在“ func2”中本地?我们应该释放 退出该功能之前需要记忆吗?

1 个答案:

答案 0 :(得分:1)

  

执行以下命令后,分配给变量a,b和c(它们是“ func1”中的局部变量)的内存会发生什么情况?   主要功能中的“ func1”?

局部变量存储在堆栈存储器中,并在函数退出时弹出。

  

在执行“ func2”之后,分配给“ ptr”的内存(在“ func2”中是本地的)会发生什么情况?

“ malloc”在堆上分配内存,因此程序退出后其他进程将无法使用此内存。 因此,是的,您应该在退出之前释放分配的内存。

资源:

  1. https://www.gribblelab.org/CBootCamp/7_Memory_Stack_vs_Heap.html

  2. Where in memory are my variables stored in C?