Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> си сколько памяти выделено под данный адрес, при динамическом выделении 
:(
    Опции темы
Alexandr87
Дата 10.7.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 2
Всего: 39



Память выделяется malloc`ом, нужна функция, которая по данном адресу выдаст сколько памяти выделено на данный адрес.
PM Jabber   Вверх
Alek86
Дата 10.7.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



в стандартных сях такого, скорее всего, нету
можно хранить структуру из адреса и размера


--------------------
user posted image    user posted image
PM MAIL   Вверх
W4FhLF
Дата 10.7.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



В windows есть api HeapSize


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexandr87
Дата 10.7.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 2
Всего: 39



Нужно именно стандартными для си средствами, так как компилироваться будет под другую платформу.
PM Jabber   Вверх
W4FhLF
Дата 10.7.2008, 15:01 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Стандартных нет. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexandr87
Дата 10.7.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 2
Всего: 39



Цитата(Alek86 @  10.7.2008,  17:43 Найти цитируемый пост)
можно хранить структуру из адреса и размера 

мы этот вариант рассматривали, но хотели как можно меньше геморроя.

Цитата(W4FhLF @  10.7.2008,  18:01 Найти цитируемый пост)
Стандартных нет.  

Жаль,  :(, интересно почему?
PM Jabber   Вверх
Alek86
Дата 10.7.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



я знаю, что управление памятью лежит на ОС
и если ты сделаешь malloc(100000) то нет никакой гарантиии, что она тебе выделила именно 100000 байт
хотя не уверен, что это главная причина

Добавлено @ 15:33
Alexandr87, вы пишете что-то, что так критично по скорости работы, что вы будете работать с голыми укзателями? драйвер какой или крутую игру?

Это сообщение отредактировал(а) Alek86 - 10.7.2008, 15:35


--------------------
user posted image    user posted image
PM MAIL   Вверх
SIRIUStar
Дата 11.7.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 20.7.2007
Где: Одинцово

Репутация: нет
Всего: нет



Цитата(Alexandr87 @  10.7.2008,  15:02 Найти цитируемый пост)
Цитата(W4FhLF @  10.7.2008,  18:01 )Стандартных нет.  Жаль,  :(, интересно почему?


а как ты себе представляешь программа может определить только по адресу сколько захваченно паняти??))) ну хотя.. идти по адресам пока не напорится на АксесВалюейшн)) ха ха) но врядли они бы такое замутили)))

к сожелению нельзя.. предлагаю структуру из адреса и объема даных как предлагал Alek86)) это все решит.  smile 
PM MAIL WWW ICQ   Вверх
Rififi
Дата 11.7.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



Цитата(Alexandr87 @  10.7.2008,  15:02 Найти цитируемый пост)
интересно почему? 

потому что в общем случае это не нужно, а там где нужно, вступают в действие custom-менеджеры памяти, где всё это есть.
PM MAIL   Вверх
Alek86
Дата 11.7.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(SIRIUStar @  11.7.2008,  14:57 Найти цитируемый пост)
а как ты себе представляешь программа может определить только по адресу сколько захваченно паняти??))) ну хотя.. идти по адресам пока не напорится на АксесВалюейшн)) ха ха) но врядли они бы такое замутили)))

хохо
а подскажи-ка мне, как прога умудряется при delete[] удалить столько же, сколько new выделил? тоже по адресам ходит? smile


Цитата(Rififi @  11.7.2008,  17:39 Найти цитируемый пост)
потому что в общем случае это не нужно

как я опнимаю, эта инфа и так есть, просто от пограммера скрыта
вот и интересно, почему она скрыта...


--------------------
user posted image    user posted image
PM MAIL   Вверх
gamedeveloper
Дата 11.7.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 8.7.2007

Репутация: нет
Всего: нет



я конечно не уверен, но думаю что ось хранит где то в недрах памяти таблицы из уже предложеных структур. думаю должны быть функции доступа к этим таблицам и думаю они спрятаны где то в ядре.
PM MAIL   Вверх
just_geek
Дата 11.7.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 2
Всего: 10



В винде есть хорошя функция для этого - _msize, аналога под линукс пока не нашел :-(
PM MAIL   Вверх
Lazin
Дата 11.7.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(SIRIUStar @  11.7.2008,  14:57 Найти цитируемый пост)
а как ты себе представляешь программа может определить только по адресу сколько захваченно паняти??))) ну хотя.. идти по адресам пока не напорится на АксесВалюейшн)) ха ха) но врядли они бы такое замутили)))

ошибка доступа произойдет только тогда, когда приложение попытается вылезти за пределы доступного адресного пространства (в адресное пространство другого процесса) и MMU ударит его по рукам, если ты просто вылез за пределы массива на пару байт, ты об этом скорее всего не узнаешь (вернее узнаешь, по непонятным глюкам или в лучшем случае сработавшему assert-у) smile 
в принципе ты в своей программе не можешь обработать такую ситуацию, так как это undefined behavior...

Цитата(Alek86 @  10.7.2008,  15:31 Найти цитируемый пост)
я знаю, что управление памятью лежит на ОС
и если ты сделаешь malloc(100000) то нет никакой гарантиии, что она тебе выделила именно 100000 байт
хотя не уверен, что это главная причина

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

Цитата(Alek86 @  11.7.2008,  17:45 Найти цитируемый пост)
как я опнимаю, эта инфа и так есть, просто от пограммера скрыта
вот и интересно, почему она скрыта... 

эта инфа сильно зависит от диспетчера памяти, например я написал класс и диспетчер памяти для него, который выделяет под объекты моего класса блоки фиксированного размера, там инфа о размере нафик не нужна smile
PM MAIL Skype GTalk   Вверх
Alek86
Дата 12.7.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(Lazin @  11.7.2008,  19:14 Найти цитируемый пост)
malloc и new, в случае успеха вделяют не меньше запрошеного колличества байт... 

неа
винда, к примеру, скажет, что выделила данное кол-во байт, но на самом деле выделит по минимуму, а потом, если надо, будет подгружать


--------------------
user posted image    user posted image
PM MAIL   Вверх
vinter
Дата 12.7.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Alek86 @  12.7.2008,  11:28 Найти цитируемый пост)
неавинда, к примеру, скажет, что выделила данное кол-во байт, но на самом деле выделит по минимуму, а потом, если надо, будет подгружать

откуда такие сведения?


--------------------
Мой блог
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.