Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnix, тебе повезло попасть в один из лучших форумов рунета. Разумеется на все вопросы тебе тут не ответят и не все хотелки воплотят но ты имеешь уникальную возможность привлекать специалистов высокого класса (реально) к решению проблем БЕСПЛАТНО. Другого форума с лучшим фидбэком ты не найдешь. Я гарантирую это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 16:34 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
mayton, Да, вроде, нет в моей фразе и тени нетерпимости. Может тебе показалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 16:43 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
mayton, Я в курсе что это один из лучших форумов Рунета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 20:50 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnixНе, мне нужно именно размер динамического массива. Вектор мне не нужен. В этом то вся и затыка. У меня функция формирует массив структур, помещает в память и возвращает указатель. А уже остальные над этими данными глумятся. Нужен. Поменьше глупости и будет нужен. Уж такие простые вещи ваши "остальные" пусть выучат, либо из С, либо из С++. В С++ узнать размер динамического массива size_t size_arr = arr.size();, узнать сколько зарезервировано памяти size_t rsize_arr = arr.capacity();, получить указатель на него auto ptr = arr.data();, а называется он вектор: std::vector<int> arr(100); и память освобождает сам, никаких delete не нужно. В C невозможно узнать размер динамического массива, можно только получить размер зарезервированной памяти: unsigned int rsize_arr = _msize(arr); - и то это нестандартная и непереносимая функция. А создается он так: int* arr = new int [10]; и в конце обязательно нужно удалять: delete arr[]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 21:18 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Поменьше глупостиА создается он так: int* arr = new int [10]; Вот только оператора new в С нет и не было. Он тоже принадлежит С++. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 21:21 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПоменьше глупостиА создается он так: int* arr = new int [10]; Вот только оператора new в С нет и не было. Он тоже принадлежит С++. Да, привычка. Если точнее то в С: int* arr = calloc(10, sizeof(int)); free(arr); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 21:36 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Вопрос поинтересней, как узнать размер памяти выдеренный/зарезервированный под std::map/set? Перемножить кол-во элементов на их размер видимо не подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 21:48 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
> Вопрос поинтересней, как узнать размер памяти выдеренный/зарезервированный под std::map/set? > Перемножить кол-во элементов на их размер видимо не подойдет. custom allocator.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 01:12 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Вопрос поинтересней, мне уже твой адрес примелькался :) Ты интересные темы поднимаешь. Залогонился-б. Так ведь и общаться удобнее. Зачем носить маску Гая Фокса когда можно открыто дискутировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 01:38 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
maytonВопрос поинтересней, мне уже твой адрес примелькался :) Ты интересные темы поднимаешь. Залогонился-б. Так ведь и общаться удобнее. Зачем носить маску Гая Фокса когда можно открыто дискутировать? Да уж куда открытей, если ник из слов моего поста и интересную тему поднимаю - это я :) Да и потом че все с никами - надо разнообразить. Если серьезно, то так удобней обсуждать конкретную тему, а не то что где-то что-то до этого сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 02:10 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
2 lnix: lnixВот конкретный простой пример. Код: plaintext В Visual Studio, в режиме отладки, жмём Shift + F9 (показать quick watch), вводим: Код: plaintext lnixНеужели никто из профи не может ответить на такой простой вопрос.... Как "Сыроежку" забанили, так и не осталось здесь профи... lnixПо началу я был восхищен языком С++ после Паскаля... Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем... Там нет таких проблем вообще. В виртовском Pascal-е 70-ых годов не было динамических массивов произвольной длины. Длина каждого массива -- константа, известная во время компиляции. Если же речь о Delphi (скорее всего), то да, там есть удобные динамические массивы, и их аналог в C++ -- это std::vector, который вам настоятельно рекомендуют. 2 MasterZiv: MasterZiv Код: plaintext Я бы не стал выводить size_t через %lu, ожидающий unsigned long. Потому что, на 64-битных платформах, size_t -- 64-битный, а unsigned long -- обычно 32-битный. Вроде как начиная с C99 можно выводить size_t через %zu, но printf из msvcrt.dll так не умеет. 2 Abstraction: AbstractionПо аналогичной причине в Studio, насколько мне известно, нет удобного способа увидеть все элементы динамического массива в отладчике так же, как показываются элементы массива статического. Способ есть, см. выше, только надо явно указать длину массива. 2 Sheraton: SheratonЯ уже забыл когда я последний раз использовал массивы из С, я думал, что их сейчас уже никто и не использует Вполне используют. Потому что STL-контейнеры не всегда подходят. 2 гость со странным nick-ом: Поменьше глупостиА создается он так: int* arr = new int [10]; и в конце обязательно нужно удалять: delete arr[]; Точнее, так: «delete[] arr;». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 04:27 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Вопрос поинтереснейДа уж куда открытей, если ник из слов моего поста и интересную тему поднимаю - это я :) Да и потом че все с никами - надо разнообразить. Если серьезно, то так удобней обсуждать конкретную тему, а не то что где-то что-то до этого сказал. Раз уж модераторы подняли эту тему, то и я выскажусь. Если серьезно, то ничего удобного в этом нет. Вас уже как минимум двое таких и непонятно кому отвечаешь. О чем идет речь всегда видно по квотингу, а если вы хотите акцентировать на чем то, то прямо в тексте поста и укажите, не зачем использовать не предназначенные для этого поля. Лично меня такой стиль раздражает, даже игнорирую иногда такие сообщения. Так шо к вам просьба указывать какой-нибудь постоянный ник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 06:01 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Извините, а что интересного в данном топике ? То, что неофит никак не может понять, что НЕЛЬЗЯ узнать размер динамического массива, а надо САМОМУ его хранить, тот, что выделял ? И кто ему ВНЯТНЕЕ это в мозг вдолбит ? Что тут интересного ? Интересных тем в SQL.ru уже давно нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 13:37 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
На всякий случай дополню. Сабж - неинтересен. Но анонимос пишет интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 14:47 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
lnix, Я где -то читал что размер помещается именно перед началом массива и в Visual Studio размер массива (хотя может это размер выделенной памяти ). Посмотрел память перед массивом и оказалось (на моем компе VS 2015), что размер находится на 12-ом байте перед началом массива . int* a = new int[5]{1,2,3,4,5}; unsigned char *p = (unsigned char *)a; cout << * ((int*)(p-12)) << ' ' << endl; выдаст корректное значение 20 p.s. Но это в визуал студии 2015, в других компиляторах размер может быть совсем в другом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 17:04 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
HappyGoodManПосмотрел память перед массивом и оказалось (на моем компе VS 2015), что размер находится на 12-ом байте перед началом массива . ... p.s. Но это в визуал студии 2015, в других компиляторах размер может быть совсем в другом месте. Замечательный способ отстрелить себе ноги. Не надо пытаться читать ту память, которую не выделял. Завтра MS что-нибудь поменяет и перед твоим массивом вообще реальной памяти не окажется, вылетишь с исключением. Причем перестанет работать прога, которая стабильно работала годами и не менялась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 17:21 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Dima T, авторЗамечательный способ отстрелить себе ноги. Не надо пытаться читать ту память, которую не выделял. Завтра MS что-нибудь поменяет и перед твоим массивом вообще реальной памяти не окажется, вылетишь с исключением. кажется я в постскриптуме написал, что это только в компиляторе vs 2015 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 17:55 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
HappyGoodManкажется я в постскриптуме написал, что это только в компиляторе vs 2015 Это может произойти даже в EXE откомпилированном в vs 2015 PS Зачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 18:49 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Dima T, авторЗачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить? Это ответ по сабжу, причем это работает, да ужасно ограниченно, но работает. И чтобы знать как не надо делать, как пример вполне пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 18:59 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
HappyGoodManp.s. Но это в визуал студии 2015, в других компиляторах размер может быть совсем в другом месте.По-моему, оно там ещё в VC6.0, но это было давно, и мне кажется, что это было -8 Dima TPS Зачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить?Да, есть функция _msize, которая сама знает, где брать размер смещения, и всегда правильно считает размер :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 05:19 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
CEMb, авторДа, есть функция _msize, которая сама знает, где брать размер смещения, и всегда правильно считает размер :) В msdn написано, что она заточена только под calloc, malloc, или realloc, а насчёт new ничего не сказано, но я проверил вроде работает и для памяти выделенной с помощью new. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 12:08 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
HappyGoodManВ msdn написано, что она заточена только под calloc, malloc, или realloc, а насчёт new ничего не сказано, но я проверил вроде работает и для памяти выделенной с помощью new.Потому что new по умолчанию выделяет память с помощью malloc(из msvcrt*.dll, void* operator new...), потом зовёт конструктор. Но так может быть не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 12:34 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
переопределите new - а там посмотрим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:13 |
|
||
|
Размер динамического массива
|
|||
|---|---|---|---|
|
#18+
Изопропилпереопределите new - а там посмотрим Переопределять не обязательно, можно проще поломать Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 19:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38132625&tid=2018207]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
250ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 17ms |
| total: | 366ms |

| 0 / 0 |
