@voipp: Аз не мисля, че информацията, която се чете е вярно. Както правилно отбеляза @DreamChild и комин, и хип - не повече от инструменти. Фактът, че топчето е по-малко от размера на купчина обикновено не означава нищо: можете да получите достъп до данните на местно и нелокални стека hipe. (Може би имахте предвид кеширане на ниво процесор, но тя не работи, както си мислиш.) Регистрира на езици от високо ниво, не е и никога няма да бъде, по много причини (например, защото компилаторът оптимизиране може да се оптимизира по-добър човек.) - VladD 05 декември '13 в 11:48
- И стека и купчина са както физически, така в RAM (не разгледа архитектурните размествания използване спец. Преработватели / компютри)
- Техният размер и местонахождение, се определя от оста
- В тази купчина той може да бъде фрагментирана (понякога доста силно). Обикновено оси са специални процедури за дефрагментиране на куп.
- Стек обикновено никога фрагментирана (Предполагам, че можеш да се сетиш за прилагане на купчина с фрагментация, но това е оксиморон).
- Стек, тъй като бързо, защото това е единственият вариант, с който работите - това е позицията на показалеца на стека (обикновено случай) - така че всички операции стека работят много по-бързо, отколкото една купчина. Работа на извличане стека / запис е един жест POP / PUSH процесор
- С куп трудно, поради простото действие и фрагментация извличане на стойността им може да доведе до десетки (и дори стотици) движения процесор.
- Против стека поради малките си размери (тя винаги е сравняван с един куп пъти по-малко) - така, че достъпът до него е напълно логично.
Отговорено 6 '13 декември в 18:47
@Barmaley: 6) Логично е да разпредели памет на куп, но ако имате указател към обект на куп, и указател към обект в стека, високоскоростен достъп до строго идентични. 7) Отново достъп се осъществява не съответства четене и сочен показалеца. - VladD 06 Дек '13 в 20:15
Наистина, скоростта на достъп до данни в стека и купчината същото. Т.е. Предмети 5) и 6) е грешка. Не бях мързелив и проверява времето на запълване (няколко опита), масив от 2 милиона. Int (повече в стека аз не се вписва) в купчината и комина. невалидни пълнене (Int на [], Int п)
@avp ние не трябва да се опитаме да е необходимо да се гарантира, че един куп фрагментиран - за тази цел е необходимо да се направи облака случайно разпределение на различни размери, а също и на случаен принцип ги отстрани, само след проверка на скоростта на достъп до голям масив на куп (!). В противен случай, ако на куп не е фрагментирана скорост разбира се ще бъде същото. - Barmaley 8 декември '13 в 18:47
Въпреки, че много време е минало, откакто сте зададе въпроса, бих искал да отговоря, тъй като този въпрос е все още "Google" и мисля, че много повече ще посетете тази страница.
Както вече отговорили с "физически" - това е транзистори и кондензатори. Така че въпросът е бил повдигнат вероятно не е напълно вярно. Може би искаш да кажеш нещо подобно - ". Когато има един куп купчина и начина им на работа"
Също така. вероятно. се интересувате от общо подредени в паметта, напълно осветяване на този въпрос няма да го направя, но аз искам да ви покажа изчерпателен по мое мнение, материалът, и да предоставя линкове към тях. Материали на руски. Трябва да се разбере какво е виртуална памет и как се превежда на физическото.
Ето един пример от организацията на сегмента на паметта.
Това е кратък и малко за виртуална памет на физическото представяне.
По отношение на устройството с памет в рамките на процеса:
КОД се съхранява в устройството, както и много други неща, които могат да се учат от мен Препоръчайте този материал в отговора.
По-добре е да се каже така. Типични операции на паметта са разпределени средства / освобождаване и четене / запис. заделяне на памет и операции deallocation движат по-бавно в купчина.
Ако, например, ние започваме указател към данните, лежащи в една купчина, разликата в скоростта на достъп е абсолютно никакъв.
Отговорено 7 '13 декември в 06:11
"Достъп до данни (четене / запис) е почти една и съща скорост," И ако данните са разпокъсани, не се забави тяхното четене? - voipp 07 Декември '13 в 11:14
@voipp: Какво означава "данни е фрагментирана?" Ако говорим за раздробяването на масива, а след това не се случи, на масива винаги отива направо. Ако става дума за лечение на различни обекти, те могат да бъдат разделени в паметта и местоположението им в стека и куп. - VladD 07 Декември '13 в 11:57
Да, аз подкрепям @VladD. Структурата също така не може да бъде фрагментирана. Ако имате куп структура с STD :: низ, съдържанието на линията, обикновено - в купчина :). По-скоро, че е необходимо да се мисли за структурите от данни, които трябва да се използват, а не тяхното местоположение. Списъкът, например, понякога може да бъде по-добре, отколкото на масива, но е склонен към фрагментиране (и повече разходи за памет). - Майкъл M 08 Декември '13 в 09:01
Свързани статии