|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.01.2011, 15:47 | #1 |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 10
|
malloc & calloc
Привет !
Суть проблемы: выделяю память для большого числа одинкаовых массивов, суммарным размером в ~ 47 Мб. Использую сalloc - программа занимает в памяти ~ 205 Мб, если использовать malloc - занимает около ~ 70 Мб. Везде пишут, что разница между этими 2-мя функциями, только в обнулении памяти в calloc. Как выяснилось, памяти съедается больше из-за того, что под массив выделяется на самом деле больший объем памяти. Т.е. для выделяю память malloc под массивы размером в 8 байт, получаю адреса : 0x93eee348 , 0x93eee358 , 0x93eee368 .... Т.е. фактически выделяется не 8 байт, а 16. Выделяю память сalloc под массивы размером в 8 байт, получаю адреса: 0x81f3648 , 0x81f3670 , 0x81f3698 ... Т.е. фактически выделяется не 8 байт, а 40. Реально ли сделать так, чтобы под массив 8 байт, отводилось 8 байт ? И почему calloc и malloc "выделяют" память по разному ? З.Ы.: компиллятор gcc , ОС Linux на VS+Win не проверял |
25.01.2011, 15:52 | #2 |
Регистрация: 19.12.2010
Сообщений: 5
|
может и не в тему
Подскажите пожайлуста где можно скачать Borland C++ . Или может кто-то может скинуть.
|
25.01.2011, 15:58 | #3 |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 10
|
Из интернета,блин, можно. Сам недавно узнал, в шоке сижу
http://www.google.com/search?ie=UTF-...B0%D1%82%D1%8C Последний раз редактировалось dn.xmk; 25.01.2011 в 16:00. |
25.01.2011, 16:51 | #4 | |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Цитата:
По теме теперь. Странно как-то. Сейчас проведу тесты... upd: Собирал с помощью gcc --std=c99 ./main.c Код:
Код:
Автор, может ты там напутал чего?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 25.01.2011 в 17:10. |
|
25.01.2011, 17:34 | #5 |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 10
|
Врядли )
Попробуй например так : Код:
Код:
IRL кушает кушает намного больше. Ну и для завершения эксперимента меняем calloc на malloc и смотрим на размер. В моем случае calloc навдыелял 72 Мб , а malloc - 24 , вместо положеных 16 +- поправка на ветер Последний раз редактировалось dn.xmk; 25.01.2011 в 17:41. |
25.01.2011, 17:37 | #6 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
В первом случе ты зачем-то сохраняешь указатели как int'ы, зачем?
А во втором ты приводишь calloc к int? Ладно бы если приводил к int*, но вообще приводить не обязательно в С . Но это всё оффтоп. Код:
Код:
Что-то ты чернишь .
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 25.01.2011 в 17:43. |
25.01.2011, 17:47 | #7 |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 10
|
хм. как ты занимаемую память смотришь ?
|
25.01.2011, 17:49 | #8 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
В KDE ctrl+esc нажимаю . Или в htop по перцентажу, там оба показывают 4.2% от моих 2 гигов.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
25.01.2011, 17:54 | #9 | |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 10
|
Цитата:
В принципе, ps -C %AppName% -F , если по RSS смотреть то же самое, что и System Monitor показывает. Но в любом случае, 81820 КиБ это дофига. Это грубо говоря по 70 байт на массив вместо 16 Последний раз редактировалось dn.xmk; 25.01.2011 в 17:59. |
|
25.01.2011, 17:59 | #10 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
16*4*1048576/1024 = 65536
Вполне нормально.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В чем разница между malloc и calloc ? | alexobenikov | Общие вопросы C/C++ | 5 | 10.02.2010 22:01 |
SIEGSEGV в malloc() | TheVampire | Общие вопросы C/C++ | 0 | 25.09.2009 14:32 |
TForm & TImage & PNG & Прозрачность | delphi_beginner | Общие вопросы Delphi | 7 | 19.09.2009 08:46 |
Проблема с malloc | Обледеневший | Общие вопросы C/C++ | 7 | 14.09.2009 18:06 |
malloc free Ошибка. | BeNN | Общие вопросы C/C++ | 19 | 09.07.2009 12:46 |