реклама на сайте
подробности

 
 
> Возвращение указателя на динамический массив
Nikitoc
сообщение Mar 1 2012, 15:03
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



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


Собственно вопросы:

1. Где необходимо удалять эту переменную result (я имею в виду вызов ф-ции free())? Только в той функции, в которой она была выделена (Multiple()) или же можно сделать это в вызывающей функции по полученному указателю?
2. Я правильно понимаю, что возвращать указатель можно потому, что динамически выделенная переменная помещается в кучу, а не в стек?
3. Как называется область оперативной памяти, которая не отводится под кучу или стек? Как она используется компилятором (что туда "ложится")?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Ivana
сообщение Mar 1 2012, 21:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Это было на правах фантазии дилетанта sm.gif Убирать в квартире постоянно или перед приходом гостей...
Никто не мешает сделать эти функции в существующем менеджере памяти. Разумеется, решать что ещё нужно а что нет лучше оставить человеку. Может ему через 10000000 тактов понадобится тот выделенный когда-то кусок и он сделал это осознанно. Просто если он хочет - будет выделять/освобождать каждый кусочек отдельно. А если "забывчивый" - пусть помнит хотя бы (в отдельном месте, массиве нужных временных динамических переменных, самостоятельно) - то что ещё ему нужно sm.gif Просто очень уж грустно и безысходно звучал тезис о потерянном навсегда кусочке памяти, вот я и фантазирую как можно их восстанавливать.

Например, в своем пока единственном проекте на asm с использованием ОЗУ, я планирую расписывать на каждом шаге какие переменные мне нужны, а не какие можно освободить. Это хотя бы даст график требуемого объема ОЗУ от текущего шага задачи и позволит определить максимально нужный объем под "динамические" переменные.

Сообщение отредактировал _Ivana - Mar 1 2012, 21:13
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nikitoc   Возвращение указателя на динамический массив   Mar 1 2012, 15:03
- - ys05   Цитата(Nikitoc @ Mar 1 2012, 18:03) 1. Гд...   Mar 1 2012, 15:59
- - toweroff   ойой возвращать из функции адрес локальной перемен...   Mar 1 2012, 16:09
|- - xemul   Цитата(toweroff @ Mar 1 2012, 20:09) ойой...   Mar 1 2012, 16:20
|- - toweroff   Цитата(xemul @ Mar 1 2012, 20:20) Возвращ...   Mar 1 2012, 16:40
- - Сергей Борщ   QUOTE (Nikitoc @ Mar 1 2012, 17:03) 1. Гд...   Mar 1 2012, 18:18
|- - toweroff   Цитата(Сергей Борщ @ Mar 1 2012, 22:18) И...   Mar 1 2012, 18:28
|- - xemul   Цитата(Сергей Борщ @ Mar 1 2012, 22:18) К...   Mar 1 2012, 18:54
|- - _Pasha   Цитата(xemul @ Mar 1 2012, 21:54) Я не пр...   Mar 2 2012, 01:34
- - Nikitoc   Всем спасибо за ответы. Вопрос Сергею: я спросил п...   Mar 1 2012, 18:54
- - _Ivana   Это стОит того, чтобы ждать! Так и я пойму да...   Mar 1 2012, 19:39
- - Сергей Борщ   QUOTE (toweroff @ Mar 1 2012, 20:28) то е...   Mar 1 2012, 19:44
- - toweroff   Цитата(Сергей Борщ @ Mar 1 2012, 23:44) В...   Mar 1 2012, 19:51
|- - Сергей Борщ   QUOTE (toweroff @ Mar 1 2012, 21:51) полу...   Mar 1 2012, 20:10
- - Nikitoc   Сергей, спасибо Вам большое. Разжевано предельно п...   Mar 1 2012, 19:57
- - _Ivana   Со стеком имхо ничего не поможет справиться, кроме...   Mar 1 2012, 20:00
|- - toweroff   Цитата(_Ivana @ Mar 2 2012, 00:00) Со сте...   Mar 1 2012, 20:03
- - _Ivana   Как интересно-то! Лично я бы стал пользоватьс...   Mar 1 2012, 20:17
|- - XVR   Цитата(_Ivana @ Mar 2 2012, 00:17) Если ф...   Mar 2 2012, 08:40
- - toweroff   То есть "в лоб" - (как уже упомянали) - ...   Mar 1 2012, 20:24
- - _Ivana   Ладно, уговорили: free_всё_кроме_заполненного_масс...   Mar 1 2012, 20:30
|- - Сергей Борщ   QUOTE (_Ivana @ Mar 1 2012, 22:30) просто...   Mar 1 2012, 20:55
- - toweroff   Цитата(_Ivana @ Mar 2 2012, 00:30) Ладно,...   Mar 1 2012, 21:00
- - _Ivana   XVR спасибо, очень интересно и познавательно!   Mar 2 2012, 15:00
- - Idle   Цитатаresult = (WORD *)malloc(1); вылезаешь за гра...   Mar 3 2012, 13:41


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016