46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
|
||||||
1 | ||||||
Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?22.12.2009, 16:23. Показов 14341. Ответов 41
Метки нет (Все метки)
Скажем я в какой-то момент выделяю память под массив:
Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
0
|
22.12.2009, 16:23 | |
Ответы с готовыми решениями:
41
Удаление памяти, на которую ссылается указатель Как узнать размер массива в динамической памяти? Размер выделенной динамической памяти больше чем ожидается Как добавить новой динамической памяти к уже выделенной |
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
|
||||||
22.12.2009, 16:32 | 2 | |||||
а как ты её изменяешь, кстати? О_о
0
|
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
|
||||||
22.12.2009, 16:41 [ТС] | 3 | |||||
Ну как изменяют размеры массивов по твоему?
Ведь сишник точно знает, сколько байт выделяется в этой области, чтобы мог выделить еще память, не задевая уже выделенную. Разве мы не можем это откуда-нить выцепить?
0
|
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
|
||||||
22.12.2009, 16:54 | 4 | |||||
это не изменение а выделение новой памяти и уничтожение старой, старые данные не сохрантся.
а нсчет узнать размер выделенного массива. можно в его конец терминальный символ поствить '\0' например или другой.
2
|
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
|
|
22.12.2009, 17:02 [ТС] | 5 |
значит, юзать что-то навроде нульсимвола, маркера? Ну чтож, как вариант. Пасиб.
0
|
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
|
|||||||||||
22.12.2009, 17:17 | 6 | ||||||||||
только я небольшу ошибку допустил!!!
там надо так: вот рабочая прога:
0
|
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
|
||||||||||||||||
21.02.2014, 04:53 | 7 | |||||||||||||||
вернет количество занимаемой памяти в байтах
если тебе скорость не важна то используй std::vector
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
21.02.2014, 16:31 | 8 |
1
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
21.02.2014, 16:37 | 9 |
0
|
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
|
|
21.02.2014, 16:54 | 11 |
вообще динамической память размер надо таскать с собой (за редким исключением)
символ маркер интерестная идея .. но например для структур/классов она не прокатит, слишком опасно..
0
|
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
|
|
21.02.2014, 17:04 | 13 |
ValeryS, таки да, можно строку, но всегда есть шанс, что она может повторится) хотя этот шанс может стремится к бесконечности
да и тащить лишние символы как конец строки.., особенно когда у нас ограничена длина..) больше проблем, чем просто взять переменную с размером а другой путь.. ну тут мы опять тащим размер))))
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
21.02.2014, 17:09 | 14 | |||||
а иногда это единственный простой путь
например вот такая структура
как узнать малой кровью какой он?
0
|
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
|
||||||
21.02.2014, 17:29 | 15 | |||||
я бы сказал, это зачустую самый простой путь.
у нас в проекте было тоже
0
|
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
|
|
22.02.2014, 22:12 | 16 |
Вы знаете стандартные?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
22.02.2014, 22:20 | 17 |
Их не существует.
В случае new даже нестандартных нет. Хранить размер самостоятельно - это нормальный, переносимый и понятный способ. Чем он так не нравится?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|||||||||||
22.02.2014, 22:28 | 18 | ||||||||||
но delete же как то узнает
я как то баловался и находил размер он лежал перед выделенной памятью за 4 байта типа так
тот же компилятор но в другой версии, или с другими настройками может бросить этот размер совершенно в другое место Добавлено через 1 минуту или даже так
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
22.02.2014, 22:36 | 19 |
Да.
Но как это отменяет то, что средств нет? А то, что ты предложил, сам же сказал, не средство, а UB.
0
|
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
|
|
22.02.2014, 22:40 | 20 |
а чем вам не нравится _msize?
мне интересно... без подвоха
0
|
22.02.2014, 22:40 | |
22.02.2014, 22:40 | |
Помогаю со студенческими работами здесь
20
Откуда берется значение указателя после удаления памяти на которую он ссылается? Как уменьшить размер выделенной памяти Как обнулить указатель на одну ячейку в динамически-выделенной памяти? Получить адрес памяти, на который ссылается указатель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |