Вопросы, касающиеся использования памяти в C - PullRequest
0 голосов
/ 06 октября 2018

Давайте предположим следующий код:

#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 (чтонаходятся ли локальные переменные в "func1") после выполнения
    "func1" в основной функции?После этого пространство, необходимое для хранения этих переменных, может быть повторно использовано другими программами?
  • Что происходит с памятью, выделенной для "ptr" (локально в "func2"), после выполнения "func2"«?Должны ли мы освободить память перед выходом из функции?

1 Ответ

0 голосов
/ 06 октября 2018

Что происходит с памятью, выделенной для переменных a, b и c (которые являются локальными переменными в «func1»), после выполнения «func1» в основной функции?

Локальные переменные хранятся в памяти стека и удаляются при выходе из функции.

Что происходит с памятью, выделенной для "ptr" (которая является локальной в "func2")"), после выполнения" func2 "?

" malloc "выделяет память в куче, поэтому другие процессы не смогут использовать эту память после выхода из вашей программы.Так что да, вы должны освободить выделенную память перед выходом.

Ресурс:

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

  2. Где в памяти находятсямои переменные хранятся в C?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...