Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Я сам не Сишник, только пытаюсь переквалифицироваться, а потому столкнулся с проблемой, которая поставила меня в тупик: определения размера динамического массива. Поковырял Гугл, ничего толкового нет. Кто во что горазд Может кто подскажет? Вот конкретный простой пример. Код: plaintext 1. 2. Никогда бы не подумал что споткнусь на таком. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:08 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnix, Если кратко - такого способа нет. Используйте std::vector или таскайте в отдельной переменной размер массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:21 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Не, мне нужно именно размер динамического массива. Вектор мне не нужен. В этом то вся и затыка. У меня функция формирует массив структур, помещает в память и возвращает указатель. А уже остальные над этими данными глумятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:30 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Сразу вопрос в догонку, как в VC посмотреть содержимое динамического массива? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:45 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnix, Либо пусть возвращает shared_ptr на вектор, либо размер массива в дополнение к массиву, сказано же. Пока не вижу проблемы ни с первым, ни со вторым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:46 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixСразу вопрос в догонку, как в VC посмотреть содержимое динамического массива?Посмотреть выражение вида dynamicArray[17] - это тот способ, о котором известно мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:47 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Ладно, как определить размер динамического массива я разобрался. Все просто: Код: plaintext 1. 2. 3. 4. А как посмотреть содержимое массива? Вот затыка то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 11:48 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Неужели никто из профи не может ответить на такой простой вопрос.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:10 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixЛадно, как определить размер динамического массива я разобрался. Все просто: Код: plaintext 1. 2. 3. 4. А как посмотреть содержимое массива? Вот затыка то... Вам же уже сказали, нет способа определить размер динамического массива. MSDN size_t _msize( void *memblock ); Returns the size of a memory block allocated in the heap. Remarks The _msize function returns the size, in bytes, of the memory block allocated by a call to calloc, malloc, or realloc. ... Он возвращает размер выделенного блока памяти, где находится динамический массив, а не размер памяти самого массива. Они могут отличаться. Ну и функция непереносима, естественно. Впрочем, возможно для ваших целей это подойдёт. Посмотреть содержимое можно легко -- преобразовать адрес в (unsigned char *) и распечатать побайтно блок нужного размера. То же самое можно сделать в отладчике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:17 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Да... а у меня все замечательно работает и правильно определяется.... наверно у меня кривой Вижуал Студио... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:21 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Кстати, если мне не изменяет память и емкость всего блока разделить на емкость одного элемента блока то получим размер массива... Пойду посмотрю школьные учебники, вдруг я ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:25 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
опять же когда пишем Код: plaintext 1. то удаляем весь массив, емкость которого где-то хранится... значит ее можно узнать и теоретически и практически.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:29 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixто удаляем весь массив Удаляем не массив, удаляем выделенный кусок памяти. Он может быть больше массива из-за округления до блока. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:37 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Обычный вопрос обнажил проблему элементарного незнания "бывалых" сишников в вопросах динмических массивов и бодание на предмет кто круче и нахрена вам это нужно. СПАСИБО НЕ НАДО!!! Я ХОЧУ РЕШИТЬ СВОИ ПРОБЛЕМЫ.... БОДАЙТЕСЬ С ДРУГИМИ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:40 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:40 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixКстати, если мне не изменяет память и емкость всего блока разделить на емкость одного элемента блока то получим размер массива... Пойду посмотрю школьные учебники, вдруг я ошибаюсь Блок может быть большего размера, чем нужно для массива. Потом, ты исходишь чисто из своих практических соображений, а мы тут говорим о проблемах с точки зрения языка. В C/С++ таких средств нет. VC традиционно всегда хранил размер буфера (как и многие другие компиляторы) и ему даже можно было путать delete и delete []. Работает у тебя в твоём коде msize -- ну, славно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:45 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
авторзначит ее можно узнать и теоретически и практически.... Теоретически, как уже сказано, можно узнать размер выделенного блока . Практически в стандарте средств для этого не оговорено, так что даже для этого способ может существовать только для какого-то конкретного компилятора и конкретной версии runtime (при том, что Вы их в первом посте не назвали, Ваши претензии выглядят достаточно странно). То есть, язык C++ как таковой "настаивает" на том, что Вам не следует выяснять размер массива таким образом. Если у Вас это вызывает только приступы смеха - дело Ваше. По аналогичной причине в Studio, насколько мне известно, нет удобного способа увидеть все элементы динамического массива в отладчике так же, как показываются элементы массива статического. Один способ, не слишком удобный, но практически обычно удовлетворительный, мной уже был приведён: потребовать вычислить выражение array[i] или array[2] или что ещё нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:49 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Вопрос исчерпан. По началу я был восхищен языком С++ после Паскаля... Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем... Там нет таких проблем вообще. Но проблема у меня именно в том что НЕОБХОДИМО реализовать алгоритм на VC. Хотя должен сказать С++ начал мне нравиться больше Паскаля... как ни странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 12:58 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixДа... а у меня все замечательно работает и правильно определяется.... наверно у меня кривой Вижуал Студио... Есть популярная шутка про поломанные часы которые дважды в сутки могут внезапно (!) показать правильное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 13:51 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixВопрос исчерпан. По началу я был восхищен языком С++ после Паскаля... Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем... Там нет таких проблем вообще. Но проблема у меня именно в том что НЕОБХОДИМО реализовать алгоритм на VC. Хотя должен сказать С++ начал мне нравиться больше Паскаля... как ни странно. Гыыыыы а при чем тут С++? Тот массив который вы используете это С а не С++. В С++ есть vector. Создатель С++ Бьярн Страуструп рекомендует пользоваться векторами. Смысл С++ в том, что бы на нам было легче программировать чем на С, а вы в своем коде отказываетесь от С++ а затем сокрушаетесь о том, что С++ хуже паскаля ))))) Прямо смешно читать )))) Я уже забыл когда я последний раз использовал массивы из С, я думал, что их сейчас уже никто и не использует и тут вдруг обнаруживается, что их не только использует, но еще и судят по ним о достоинствах и недостатках С++ ) "Наш век беспокойства в значительной мере является результатом попыток выполнить сегодняшнюю работу вчерашними средствами..." - Маршал Мак-Люган ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 15:00 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnix, если вы хотите создавать программы на С++, то изучайте и используйте С++ а не С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 15:02 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixВсем доброго времени суток! Я сам не Сишник, только пытаюсь переквалифицироваться, а потому столкнулся с проблемой, которая поставила меня в тупик: определения размера динамического массива. Поковырял Гугл, ничего толкового нет. Кто во что горазд Может кто подскажет? Вот конкретный простой пример. Код: plaintext 1. 2. Никогда бы не подумал что споткнусь на таком. Заранее благодарен. А тебе интересно, почему людям пишущим прикладной код на С++ даже в готову не приходит решать такие задачи? Ответ очевиден: они используют уже стандарные или самописные контейнеры, которые как раз таки призваны снять с плеч прикладного программиста подобного рода задачи: Код: plaintext 1. 2. 3. 4. 5. 6. 7. А то что ты называешь "динамическим" массивом, является им лишь в той мере, что он выделяется в хипе, но не может похвастать тем, что может подстраивать свою емкость под нужды клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 15:09 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Я уже говорил, бодаться ни с кем не собираюсь потому как другие более важные дела есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 16:04 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixЯ уже говорил, бодаться ни с кем не собираюсь потому как другие более важные дела есть. Просто может статься так, что ты микроскоп для забивания гвоздей используешь, поэтому, наверное, будет правильно задавать другого рода вопросы: а как лучше? а как правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38132059&tid=2018207]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 284ms |

| 0 / 0 |
