Всем привет!
Вопросик простой, но для полноты картины происходящего в компиляторе (или в МК) мне нужно этот вопрос разъяснить. Допустим, есть какая-то функция:
Код
WORD *Multiple (BYTE A, BYTE B){
WORD *result;
result = (WORD *)malloc(1);
*result = A * B;
return result;
}
Собственно вопросы:
1. Где необходимо удалять эту переменную
result (я имею в виду вызов ф-ции
free())? Только в той функции, в которой она была выделена (
Multiple()) или же можно сделать это в вызывающей функции по полученному указателю?
2. Я правильно понимаю, что возвращать указатель можно потому, что динамически выделенная переменная помещается в кучу, а не в стек?
3. Как называется область оперативной памяти, которая не отводится под кучу или стек? Как она используется компилятором (что туда "ложится")?