![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 2 Всего: 39 |
Память выделяется malloc`ом, нужна функция, которая по данном адресу выдаст сколько памяти выделено на данный адрес.
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
в стандартных сях такого, скорее всего, нету
можно хранить структуру из адреса и размера |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
В windows есть api HeapSize
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 2 Всего: 39 |
Нужно именно стандартными для си средствами, так как компилироваться будет под другую платформу.
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Стандартных нет.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 2 Всего: 39 |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
я знаю, что управление памятью лежит на ОС
и если ты сделаешь malloc(100000) то нет никакой гарантиии, что она тебе выделила именно 100000 байт хотя не уверен, что это главная причина Добавлено @ 15:33 Alexandr87, вы пишете что-то, что так критично по скорости работы, что вы будете работать с голыми укзателями? драйвер какой или крутую игру? Это сообщение отредактировал(а) Alek86 - 10.7.2008, 15:35 |
|||
|
||||
| SIRIUStar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.7.2007 Где: Одинцово Репутация: нет Всего: нет |
а как ты себе представляешь программа может определить только по адресу сколько захваченно паняти??))) ну хотя.. идти по адресам пока не напорится на АксесВалюейшн)) ха ха) но врядли они бы такое замутили))) к сожелению нельзя.. предлагаю структуру из адреса и объема даных как предлагал Alek86)) это все решит. |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
хохо а подскажи-ка мне, как прога умудряется при delete[] удалить столько же, сколько new выделил? тоже по адресам ходит? как я опнимаю, эта инфа и так есть, просто от пограммера скрыта вот и интересно, почему она скрыта... |
|||
|
||||
| gamedeveloper |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 8.7.2007 Репутация: нет Всего: нет |
я конечно не уверен, но думаю что ось хранит где то в недрах памяти таблицы из уже предложеных структур. думаю должны быть функции доступа к этим таблицам и думаю они спрятаны где то в ядре.
|
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 2 Всего: 10 |
В винде есть хорошя функция для этого - _msize, аналога под линукс пока не нашел :-(
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
ошибка доступа произойдет только тогда, когда приложение попытается вылезти за пределы доступного адресного пространства (в адресное пространство другого процесса) и MMU ударит его по рукам, если ты просто вылез за пределы массива на пару байт, ты об этом скорее всего не узнаешь (вернее узнаешь, по непонятным глюкам или в лучшем случае сработавшему assert-у) в принципе ты в своей программе не можешь обработать такую ситуацию, так как это undefined behavior... malloc и new, в случае успеха вделяют не меньше запрошеного колличества байт... тоесть реально они выделяют больше чем нужно, это накладные расходы на системную информацию диспетчера памяти, расходы на выравнивание, а может использоваться менеджер памяти выделяющий блоки фиксированного размера для маленьких объектв...
эта инфа сильно зависит от диспетчера памяти, например я написал класс и диспетчер памяти для него, который выделяет под объекты моего класса блоки фиксированного размера, там инфа о размере нафик не нужна |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |