powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер динамического массива
51 сообщений из 51, показаны все 3 страниц
Размер динамического массива
    #38131889
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!
Я сам не Сишник, только пытаюсь переквалифицироваться, а потому столкнулся с проблемой, которая поставила меня в тупик:
определения размера динамического массива.
Поковырял Гугл, ничего толкового нет. Кто во что горазд
Может кто подскажет?
Вот конкретный простой пример.
Код: plaintext
1.
2.
int* pintarr = new int [10];
int cnt = sizeof(pintarr)/sizeof(pintarr[0]);


Никогда бы не подумал что споткнусь на таком.
Заранее благодарен.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131916
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

Если кратко - такого способа нет.
Используйте std::vector или таскайте в отдельной переменной размер массива.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131938
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, мне нужно именно размер динамического массива.
Вектор мне не нужен. В этом то вся и затыка.
У меня функция формирует массив структур, помещает в память и возвращает указатель.
А уже остальные над этими данными глумятся.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131968
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу вопрос в догонку, как в VC посмотреть содержимое динамического массива?
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131974
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

Либо пусть возвращает shared_ptr на вектор, либо размер массива в дополнение к массиву, сказано же. Пока не вижу проблемы ни с первым, ни со вторым.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131978
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixСразу вопрос в догонку, как в VC посмотреть содержимое динамического массива?Посмотреть выражение вида dynamicArray[17] - это тот способ, о котором известно мне.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38131981
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, как определить размер динамического массива я разобрался.
Все просто:
Код: plaintext
1.
2.
3.
4.
#include <malloc.h>

int* pintarr = new int [10];
int cnt = _msize(pintarr)/sizeof(pintarr[0]);



А как посмотреть содержимое массива?
Вот затыка то...
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132027
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто из профи не может ответить на такой простой вопрос....
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132043
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixЛадно, как определить размер динамического массива я разобрался.
Все просто:
Код: plaintext
1.
2.
3.
4.
#include <malloc.h>

int* pintarr = new int [10];
int cnt = _msize(pintarr)/sizeof(pintarr[0]);



А как посмотреть содержимое массива?
Вот затыка то...

Вам же уже сказали, нет способа определить размер динамического массива.

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 *) и распечатать побайтно блок нужного размера.
То же самое можно сделать в отладчике.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132053
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да...
а у меня все замечательно работает и правильно определяется....
наверно у меня кривой Вижуал Студио...
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132059
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если мне не изменяет память и емкость всего блока разделить на емкость одного элемента блока то получим размер массива...
Пойду посмотрю школьные учебники, вдруг я ошибаюсь
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132066
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять же когда пишем
Код: plaintext
1.
delete [] array


то удаляем весь массив, емкость которого где-то хранится...
значит ее можно узнать и теоретически и практически....
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132085
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixто удаляем весь массив
Удаляем не массив, удаляем выделенный кусок памяти. Он может быть больше массива из-за
округления до блока.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132095
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычный вопрос обнажил проблему элементарного незнания "бывалых" сишников в вопросах динмических массивов и бодание на предмет кто круче и нахрена вам это нужно.

СПАСИБО НЕ НАДО!!!

Я ХОЧУ РЕШИТЬ СВОИ ПРОБЛЕМЫ....

БОДАЙТЕСЬ С ДРУГИМИ.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132100
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
                                                                                                                                                                        
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void print_memory_block( void* mem, size_t size )
{
  printf( "memory block at %p of size %lu:", mem, size );
  for( unsigned i = 0; i < size; ++i )
    {
      if( !(i%10) )
        printf( "\n" );
      printf( "%2.2X ", ((unsigned char*)mem)[i] );
    }
  printf( "\nend of memory block\n", mem, size );
}

int main()
{
  int *m = new int[256];
  srand( (unsigned)time( NULL ) );
  for( unsigned i = 0; i < 256; ++i )
    m[i] = rand();
  print_memory_block( m, 256* sizeof(int) );
  return 0;
}
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132113
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixКстати, если мне не изменяет память и емкость всего блока разделить на емкость одного элемента блока то получим размер массива...
Пойду посмотрю школьные учебники, вдруг я ошибаюсь

Блок может быть большего размера, чем нужно для массива.

Потом, ты исходишь чисто из своих практических соображений, а мы тут говорим о проблемах с точки зрения языка.
В C/С++ таких средств нет.
VC традиционно всегда хранил размер буфера (как и многие другие компиляторы)
и ему даже можно было путать delete и delete [].

Работает у тебя в твоём коде msize -- ну, славно.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132122
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторзначит ее можно узнать и теоретически и практически.... Теоретически, как уже сказано, можно узнать размер выделенного блока . Практически в стандарте средств для этого не оговорено, так что даже для этого способ может существовать только для какого-то конкретного компилятора и конкретной версии runtime (при том, что Вы их в первом посте не назвали, Ваши претензии выглядят достаточно странно). То есть, язык C++ как таковой "настаивает" на том, что Вам не следует выяснять размер массива таким образом. Если у Вас это вызывает только приступы смеха - дело Ваше.

По аналогичной причине в Studio, насколько мне известно, нет удобного способа увидеть все элементы динамического массива в отладчике так же, как показываются элементы массива статического. Один способ, не слишком удобный, но практически обычно удовлетворительный, мной уже был приведён: потребовать вычислить выражение array[i] или array[2] или что ещё нужно.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132156
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос исчерпан.
По началу я был восхищен языком С++ после Паскаля...
Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем...
Там нет таких проблем вообще.
Но проблема у меня именно в том что НЕОБХОДИМО реализовать алгоритм на VC.
Хотя должен сказать С++ начал мне нравиться больше Паскаля... как ни странно.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132307
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixДа...
а у меня все замечательно работает и правильно определяется....
наверно у меня кривой Вижуал Студио...
Есть популярная шутка про поломанные часы которые дважды в сутки
могут внезапно (!) показать правильное время.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132488
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixВопрос исчерпан.
По началу я был восхищен языком С++ после Паскаля...
Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем...
Там нет таких проблем вообще.
Но проблема у меня именно в том что НЕОБХОДИМО реализовать алгоритм на VC.
Хотя должен сказать С++ начал мне нравиться больше Паскаля... как ни странно.

Гыыыыы а при чем тут С++? Тот массив который вы используете это С а не С++. В С++ есть vector. Создатель С++ Бьярн Страуструп рекомендует пользоваться векторами. Смысл С++ в том, что бы на нам было легче программировать чем на С, а вы в своем коде отказываетесь от С++ а затем сокрушаетесь о том, что С++ хуже паскаля ))))) Прямо смешно читать )))) Я уже забыл когда я последний раз использовал массивы из С, я думал, что их сейчас уже никто и не использует и тут вдруг обнаруживается, что их не только использует, но еще и судят по ним о достоинствах и недостатках С++ )

"Наш век беспокойства в значительной мере является результатом попыток выполнить сегодняшнюю работу вчерашними средствами..." - Маршал Мак-Люган
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132496
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix, если вы хотите создавать программы на С++, то изучайте и используйте С++ а не С.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132512
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixВсем доброго времени суток!
Я сам не Сишник, только пытаюсь переквалифицироваться, а потому столкнулся с проблемой, которая поставила меня в тупик:
определения размера динамического массива.
Поковырял Гугл, ничего толкового нет. Кто во что горазд
Может кто подскажет?
Вот конкретный простой пример.
Код: plaintext
1.
2.
int* pintarr = new int [10];
int cnt = sizeof(pintarr)/sizeof(pintarr[0]);


Никогда бы не подумал что споткнусь на таком.
Заранее благодарен.

А тебе интересно, почему людям пишущим прикладной код на С++ даже в готову не приходит решать такие задачи? Ответ очевиден: они используют уже стандарные или самописные контейнеры, которые как раз таки призваны снять с плеч прикладного программиста подобного рода задачи:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
std::vector<int> arr;
// читаем из стандартного потока ввода в динамический массив
std::copy((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>(), std::back_inserter(arr));
// выводим в  стандартный поток вывода
std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout));
// печатаем размер массива
std::cout << arr.size() << std::endl;



А то что ты называешь "динамическим" массивом, является им лишь в той мере, что он выделяется в хипе, но не может похвастать тем, что может подстраивать свою емкость под нужды клиента.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132584
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже говорил, бодаться ни с кем не собираюсь потому как другие более важные дела есть.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132612
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixЯ уже говорил, бодаться ни с кем не собираюсь потому как другие более важные дела есть.

Просто может статься так, что ты микроскоп для забивания гвоздей используешь, поэтому, наверное, будет правильно задавать другого рода вопросы: а как лучше? а как правильно?
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132622
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков, будьте терпимее. Аудитория здесь - самая различная.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132625
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix, тебе повезло попасть в один из лучших форумов рунета. Разумеется на все
вопросы тебе тут не ответят и не все хотелки воплотят но ты имеешь уникальную
возможность привлекать специалистов высокого класса (реально) к решению проблем
БЕСПЛАТНО. Другого форума с лучшим фидбэком ты не найдешь. Я гарантирую это.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132639
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Да, вроде, нет в моей фразе и тени нетерпимости. Может тебе показалось?
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132948
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я в курсе что это один из лучших форумов Рунета.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132975
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[];
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132977
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поменьше глупостиА создается он так: int* arr = new int [10];

Вот только оператора new в С нет и не было. Он тоже принадлежит С++.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Размер динамического массива
    #38132993
Dimitry SibiryakovПоменьше глупостиА создается он так: int* arr = new int [10];

Вот только оператора new в С нет и не было. Он тоже принадлежит С++.

Да, привычка.
Если точнее то в С: int* arr = calloc(10, sizeof(int)); free(arr);
...
Рейтинг: 0 / 0
Размер динамического массива
    #38133003
Вопрос поинтересней, как узнать размер памяти выдеренный/зарезервированный под std::map/set?
Перемножить кол-во элементов на их размер видимо не подойдет.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38133136
Фотография tehKosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Вопрос поинтересней, как узнать размер памяти выдеренный/зарезервированный под std::map/set?
> Перемножить кол-во элементов на их размер видимо не подойдет.
custom allocator..
...
Рейтинг: 0 / 0
Размер динамического массива
    #38133154
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос поинтересней, мне уже твой адрес примелькался :)

Ты интересные темы поднимаешь. Залогонился-б. Так ведь и общаться
удобнее. Зачем носить маску Гая Фокса когда можно открыто
дискутировать?
...
Рейтинг: 0 / 0
Размер динамического массива
    #38133168
maytonВопрос поинтересней, мне уже твой адрес примелькался :)

Ты интересные темы поднимаешь. Залогонился-б. Так ведь и общаться
удобнее. Зачем носить маску Гая Фокса когда можно открыто
дискутировать?
Да уж куда открытей, если ник из слов моего поста и интересную тему поднимаю - это я :) Да и потом че все с никами - надо разнообразить.
Если серьезно, то так удобней обсуждать конкретную тему, а не то что где-то что-то до этого сказал.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38142764
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 lnix:

lnixВот конкретный простой пример.
Код: plaintext
\r\nint* pintarr = new int [10];\r\n
\r\nlnixСразу вопрос в догонку, как в VC посмотреть содержимое динамического массива?
В Visual Studio, в режиме отладки, жмём Shift + F9 (показать quick watch), вводим:
Код: plaintext
pintarr, 10

lnixНеужели никто из профи не может ответить на такой простой вопрос....
Как "Сыроежку" забанили, так и не осталось здесь профи...

lnixПо началу я был восхищен языком С++ после Паскаля...
Но как оказалось прикладные задачи ВЫГОДНЕЕ решать на нем...
Там нет таких проблем вообще.
В виртовском Pascal-е 70-ых годов не было динамических массивов произвольной длины. Длина каждого массива -- константа, известная во время компиляции. Если же речь о Delphi (скорее всего), то да, там есть удобные динамические массивы, и их аналог в C++ -- это std::vector, который вам настоятельно рекомендуют.

2 MasterZiv:
MasterZiv
Код: plaintext
\r\nvoid print_memory_block( void* mem, size_t size )\r\n{\r\n  printf( "memory block at %p of size %lu:", mem, size );\r\n
\r\n
Я бы не стал выводить 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;».
...
Рейтинг: 0 / 0
Размер динамического массива
    #38142790
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос поинтереснейДа уж куда открытей, если ник из слов моего поста и интересную тему поднимаю - это я :) Да и потом че все с никами - надо разнообразить.
Если серьезно, то так удобней обсуждать конкретную тему, а не то что где-то что-то до этого сказал.
Раз уж модераторы подняли эту тему, то и я выскажусь.
Если серьезно, то ничего удобного в этом нет. Вас уже как минимум двое таких и непонятно кому отвечаешь.
О чем идет речь всегда видно по квотингу, а если вы хотите акцентировать на чем то, то прямо в тексте поста и укажите, не зачем использовать не предназначенные для этого поля.
Лично меня такой стиль раздражает, даже игнорирую иногда такие сообщения.
Так шо к вам просьба указывать какой-нибудь постоянный ник.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38143344
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, а что интересного в данном топике ?
То, что неофит никак не может понять, что НЕЛЬЗЯ узнать размер динамического массива, а надо САМОМУ его хранить, тот, что выделял ?
И кто ему ВНЯТНЕЕ это в мозг вдолбит ?

Что тут интересного ?

Интересных тем в SQL.ru уже давно нет.
...
Рейтинг: 0 / 0
Размер динамического массива
    #38143504
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай дополню. Сабж - неинтересен. Но анонимос пишет интересно.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Размер динамического массива
    #39435468
HappyGoodMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, в других компиляторах размер может быть совсем в другом месте.
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435472
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HappyGoodManПосмотрел память перед массивом и оказалось (на моем компе VS 2015), что размер находится на 12-ом байте перед началом массива .
...

p.s. Но это в визуал студии 2015, в других компиляторах размер может быть совсем в другом месте.
Замечательный способ отстрелить себе ноги.
Не надо пытаться читать ту память, которую не выделял. Завтра MS что-нибудь поменяет и перед твоим массивом вообще реальной памяти не окажется, вылетишь с исключением. Причем перестанет работать прога, которая стабильно работала годами и не менялась.
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435483
HappyGoodMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
авторЗамечательный способ отстрелить себе ноги.
Не надо пытаться читать ту память, которую не выделял. Завтра MS что-нибудь поменяет и перед твоим массивом вообще реальной памяти не окажется, вылетишь с исключением.

кажется я в постскриптуме написал, что это только в компиляторе vs 2015
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HappyGoodManкажется я в постскриптуме написал, что это только в компиляторе vs 2015
Это может произойти даже в EXE откомпилированном в vs 2015

PS Зачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить?
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435505
HappyGoodMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
авторЗачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить?
Это ответ по сабжу, причем это работает, да ужасно ограниченно, но работает. И чтобы знать как не надо делать, как пример вполне пойдет
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435575
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HappyGoodManp.s. Но это в визуал студии 2015, в других компиляторах размер может быть совсем в другом месте.По-моему, оно там ещё в VC6.0, но это было давно, и мне кажется, что это было -8
Dima TPS Зачем такое вообще писать? Стреляй себе в ноги, но зачем других этому учить?Да, есть функция _msize, которая сама знает, где брать размер смещения, и всегда правильно считает размер :)
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435748
HappyGoodMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb,
авторДа, есть функция _msize, которая сама знает, где брать размер смещения, и всегда правильно считает размер :)
В msdn написано, что она заточена только под calloc, malloc, или realloc, а насчёт new ничего не сказано, но я проверил вроде работает и для памяти выделенной с помощью new.
...
Рейтинг: 0 / 0
Размер динамического массива
    #39435760
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HappyGoodManВ msdn написано, что она заточена только под calloc, malloc, или realloc, а насчёт new ничего не сказано, но я проверил вроде работает и для памяти выделенной с помощью new.Потому что new по умолчанию выделяет память с помощью malloc(из msvcrt*.dll, void* operator new...), потом зовёт конструктор. Но так может быть не всегда.
...
Рейтинг: 0 / 0
Размер динамического массива
    #39436091
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переопределите new - а там посмотрим
...
Рейтинг: 0 / 0
Размер динамического массива
    #39436129
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпереопределите new - а там посмотрим
Переопределять не обязательно, можно проще поломать
Код: plaintext
1.
2.
int a[] = {1,2,3,4,5};
f(a);
...
Рейтинг: 0 / 0
Размер динамического массива
    #39436232
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗамечательный способ отстрелить себе ноги.Ты любой реверс-инжениринг называешь "отстрелить себе ноги"?
...
Рейтинг: 0 / 0
Размер динамического массива
    #39436799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Common LispDima TЗамечательный способ отстрелить себе ноги.Ты любой реверс-инжениринг называешь "отстрелить себе ноги"?
Я конкретно про этот случай писал. За все на свете отвечать не готов. По существу есть что сказать?
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер динамического массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]