Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/56: Рейтинг темы: голосов - 56, средняя оценка - 5.00
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542

выделение памяти new и ее подсчет _msize

05.02.2014, 15:04. Показов 11510. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
void* a;
        a=new char[1];
        int size=_msize(a);
почему размер 12?
для
C++
1
2
3
void* a;
        a=new char[13];
        int size=_msize(a);
размер 20
для
C++
1
2
3
void* a;
        a=new char[100];
        int size=_msize(a);
размер 104
для
C++
1
2
3
void* a;
        a=new char[200];
        int size=_msize(a);
размер 204
а как 12 насчитывается? Для int, double, short тоже 12 почему?

Добавлено через 6 минут
Задача вообще говоря определить число элементов в массиве
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2014, 15:04
Ответы с готовыми решениями:

Выделение памяти (CodeGear RAD Studio 2009 - C++ builder). Выделение памяти - консоль vs SDIApp
Есть определенный класс - длинная арифметика. Не идеальный - хранение данных исполнено в виде динамического массива типа short int, каждая...

Стек, куча, хранение в памяти, динамическое выделение памяти, указатели в чем отличие?
Здравствуйте. Прочитал кучу определений но никак не пойму вообще что к чему. 1)Стек - это якобы кусок оперативной памяти который...

Вектор, утечка памяти, функция создания и выделение памяти
Здравствуйте. Есть проблема. функция malloc выделяет память лишь в функции CreateVector(), и при выходе из нее указатель теряется. Или не...

20
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.02.2014, 15:08
C++
_msize(a);
откуда такая функция? Почему не sizeof()?

Добавлено через 3 минуты
Цитата Сообщение от klynxe Посмотреть сообщение
Задача вообще говоря определить число элементов в массиве
Его не нужно определять, так как вы сами его задаете в квадратных скобках.
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
05.02.2014, 15:22  [ТС]
Цитата Сообщение от programina Посмотреть сообщение
Почему не sizeof()
возвращает размер указателя а не размер массива
Цитата Сообщение от programina Посмотреть сообщение
Его не нужно определять, так как вы сами его задаете в квадратных скобках.
У меня 5-ти первый массив разной длинны внутри и с разными типами данных, мне тогда нужен еще 4-ех мерный массив для хранения длинны каждого массива
0
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.02.2014, 15:26
klynxe, а почему не хотите писать char вместо void?

Добавлено через 1 минуту
и все таки что за _msize?
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
05.02.2014, 15:28  [ТС]
Цитата Сообщение от programina Посмотреть сообщение
klynxe, а почему не хотите писать char вместо void?
Потому что у меня 5-ти мерный массив в котором разные типы

Добавлено через 1 минуту
Цитата Сообщение от programina Посмотреть сообщение
msize
Функция должна возвращать размер выделенной памяти...
из #include <malloc.h>
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
05.02.2014, 15:29
Впервые сталкиваюсь с msize! это из нового стандарта? Или это какой-то макрос, специфичный для некоего компилятора?
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
05.02.2014, 15:30  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
msize
Наберите в гугле, знаю что подключается из <malloc.h> у меня билдер 6
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
05.02.2014, 15:34
klynxe, В вижуал студио 2012 проблем не возникает. Либо попробуйте память через маллок выделить, если что либо изменит это
0
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.02.2014, 15:37
если маллок, то нужно юзать сишное выделение памяти.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
05.02.2014, 15:39
Да, действительно. Билдер знает об этой функции:
Описание
Header File
malloc.h

Category
Memory Routines

Prototype
size_t _msize(void *block);

Description
Returns the size of a heap block.

_msize returns the size of the allocated heap block whose address is block. The block must have been allocated with malloc, calloc, or realloc. The returned size can be larger than the number of bytes originally requested when the block was allocated.

Return Value
_msize returns the size of the block in bytes.

Пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <malloc.h>        /* malloc() _msize() */
#include <stdio.h>            /* printf() */
 
int main( )
{
  int size;
  int *buffer;
 
  buffer = malloc(100 * sizeof(int));
  size = _msize(buffer);
  printf("Allocated %d bytes for 100 integers\n", size);
 
  return(0);
}
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
05.02.2014, 15:44
Что препятствует использованию контейнеров stl?
0
78 / 78 / 9
Регистрация: 26.12.2011
Сообщений: 217
05.02.2014, 15:45
Kuzia domovenok, это Си-шная функция, которая используется ТС-ом не по назначению.
klynxe, раз уж используете функции из Си, то и выделяйте память соответствующе и не лезьте к С++ операторам.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
05.02.2014, 16:10
zelim, ты уверен, что это стандартная сишная функция, а не какое-либо расширение, зависящее от ОС или компилятора?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
05.02.2014, 16:28
http://docwiki.embarcadero.com... 3/en/Msize
Returns the size of a heap block.

_msize returns the size of the allocated heap block whose address is block. The block must have been allocated with malloc, calloc, or realloc.The returned size can be larger than the number of bytes originally requested when the block was allocated.
Добавлено через 6 минут
Цитата Сообщение от klynxe Посмотреть сообщение
Задача вообще говоря определить число элементов в массиве
сохранить при выделении. В чем проблема то?
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
05.02.2014, 16:34
Croessmah, тогда malloc+placement new и можно использовать _msize!
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
05.02.2014, 16:35
Цитата Сообщение от Croessmah Посмотреть сообщение
сохранить при выделении. В чем проблема то?
В том, что там вместо аккуратных структур написан вот этот ад: 5-ти мерный массив
0
05.02.2014, 16:37

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
В том, что там вместо аккуратных стуктур написан вот этот ад
офигеть... =-O

0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
05.02.2014, 17:14  [ТС]

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Не по теме:
Сообщение от 0x10
В том, что там вместо аккуратных стуктур написан вот этот ад
офигеть...
Ладно, переделаю.....
А так вообще как нормально размер определить я так и не понял


_msize в нете почитаю, у нее проблемы, если использовать не int и еще пару типов
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
05.02.2014, 17:16
Цитата Сообщение от klynxe Посмотреть сообщение
А так вообще как нормально размер определить я так и не понял
стандартными путями никак
0
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.02.2014, 18:53
Цитата Сообщение от zelim Посмотреть сообщение
Kuzia domovenok, это Си-шная функция, которая используется ТС-ом не по назначению.
У меня нет такой функции.

Добавлено через 7 минут
А вообще, такое бывает, что нужно найти длину массива неизвестной изначально длины?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2014, 18:53
Помогаю со студенческими работами здесь

Выделение памяти, проверка на утечку памяти
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2

Выделение памяти и уничтожение памяти
Извините, но так и не нашел нормального и четкого ответа на следующий вопрос: у меня есть класс Route class Route : public Space ...

Textbox. Поиск, выделение и подсчёт одинаковых чисел
Я только начал заниматься C# и есть такой вопрос. Допустим, есть несколько textbox-ов на форме. 1). Как сделать, чтобы можно было вводить...

Выделение подсчет и копирование одинаковых значений в отдельный лист
Добрый день! Есть эксель документ с логом просмотра разных документов за 10 лет. В логе название документа(буквы и цифры), дата...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru