powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / type-rich инициализация
24 сообщений из 74, страница 3 из 3
type-rich инициализация
    #39893524
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
чём сложность то ему посчитать...
сборщик мусора все считает и ему это удается.
А программист... Не царское это дело (с)
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893629
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А заранее знать занафига?))

да не заранее
ты пишешь, что вообще никак не узнать
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893639
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухнепонятно, в чём сложность то пробежаться по вектору и посчитать заполненные поля в
структурах...

Это даст тебе объём картошки. Просранное свободное место в пуле ты так не почитаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893648
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
PetroNotC Sharp
А заранее знать занафига?))

да не заранее
ты пишешь, что вообще никак не узнать
вот ведь дискус)).
Дал три варианта на все случаи жизни.
Для третичной логики
А, В и С.
Они охватывают все варианты в жизни. Рантайм это вариант С.
Дак нет же, опять все не так).
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893656
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
полудухнепонятно, в чём сложность то пробежаться по вектору и посчитать заполненные поля в
структурах...

Это даст тебе объём картошки. Просранное свободное место в пуле ты так не почитаешь.
если физически пройти по вектору и в каждой структуре чекнуть - сколько в поле байт
PetroNotC Sharp
Дак нет же, опять все не так).

слово "никак" было лишним
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893657
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
если физически пройти по вектору и в каждой структуре чекнуть - сколько в поле байт

= физически пробежать по памяти и в каждой ячейке чекнуть - сколько там байт
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893663
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,
PetroNotC Sharp
полудух
а посчитать размеры полей в структуре и умножить на кол-во структур в векторе это единственный правильный способ узнать полный размер в памяти?

A) если простой объект - sizeof
B) если сложный то никак не узнать
С) в отладчике или профайлере в рантайм.

Ну тогда рассказывай, как в B) вычислять размер объекта если в нем ссылки на другие объекты.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893674
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

предположим, что ты создал и залил данные в вектор.
И ты как-то зафиксировал объем используемой памяти до и после и вычел второе из первого. И что? Это все равно не будет "объемом, занимаемым вектором". И даже не факт, что величина будет положительной.
...
Скажи, ну вот зачем тебе это надо?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893686
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
полудух,
PetroNotC Sharp
пропущено...

A) если простой объект - sizeof
B) если сложный то никак не узнать
С) в отладчике или профайлере в рантайм.

Ну тогда рассказывай, как в B) вычислять размер объекта если в нем ссылки на другие объекты.

а что ссылка это тупик чтоли, это же адрес в памяти
по этому адресу можно найти объект, осталось посчитать кол-во байт в каждом члене объекта
ёёёёё
полудух,

предположим, что ты создал и залил данные в вектор.
И ты как-то зафиксировал объем используемой памяти до и после и вычел второе из первого. И что? Это все равно не будет "объемом, занимаемым вектором". И даже не факт, что величина будет положительной.

а зачем "до и после"? Конечно это не будет "объёмом, занимаемым вектором"...
надо прочекать ячейку в памяти каждого члена класса и посчитать кол-во байт в ней
для всех классов в векторе
только и всего
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893695
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
а что ссылка это тупик чтоли, это же адрес в памяти
по этому адресу можно найти объект, осталось посчитать кол-во байт в каждом члене объекта

ты же не джун чтобы такой болтовнёй заниматься.
Сначала попробуй, а потом говори.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893696
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в C++ - джун

как я попробую, если я тут спрашиваю "как это сделать"
что, нельзя посчитать кол-во байт в ячейке?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893708
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧТО может пойти не так?!

YouTube Video
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893743
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
как я попробую, если я тут спрашиваю "как это сделать"
не так. Я говорю нельзя, а ты говоришь слово лишнее).
- как обходить зависимости (дерево или циклические зависимости) будешь? Рекурсией?
- как определишь что указатель на инициализированный объект а не пустышка?
И т.д.
Лучше выбрось из головы странную задачу.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893838
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что в ней странного то? есть вектор объектов и я хочу знать его размер в памяти.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893840
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
- как определишь что указатель на инициализированный объект а не пустышка?

по заветам Страуса - конструктор всё проинициализирует
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893874
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
что в ней странного то? есть вектор объектов и я хочу знать его размер в памяти.

"босиком по лужам" Почему?
Ответ - Что странного? Хочу босиком по лужам!

полудух
PetroNotC Sharp
- как определишь что указатель на инициализированный объект а не пустышка?

по заветам Страуса - конструктор всё проинициализирует

Вопрос был как считать указатели?
class A
{
Settings *settings;
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893884
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а если без указателей
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893885
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
по заветам Страуса - конструктор всё проинициализирует

Не всё?
class A
{
std::unique_ptr<FileBitmap> file{};
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893889
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
ну а если без указателей
см выше вариант А. Это не сложный случай.
А мы отвлеклись на лишнее слово "нельзя".
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893919
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
что в ней странного то? есть вектор объектов и я хочу знать его размер в памяти.

Точно нельзя сказать, но для std::vector примерно так:
Код: plaintext
1.
2.
// v - экземпляр std::vector
mem_size = sizeof(v) + v.size() * sizeof(v[0]);



Для других контейнеров - по-другому
...
Рейтинг: 0 / 0
type-rich инициализация
    #39894201
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и какой прок от sizeof(obj)?
он вообще не несёт реальной инфы об объекте в памяти, там даже цифра не меняется

в общем надо дергать вручную каждое поле и складывать их все
и каждый стринг всё равно считать через .size()
...
Рейтинг: 0 / 0
type-rich инициализация
    #39894209
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
каждый стринг всё равно считать через .size()

И все равно не правильно будет.
А как правильно - никто не скажет, потому что никому это не нужно.
Как не нужно и тебе.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39894221
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему не правильно?
Код: plaintext
1.
2.
3.
    string str1 {"I'm string of 23 bytes."};
    string str2 {"А я стринг на 36 байт."};
    printf("str1: %d, str2: %d\n", str1.size(), str2.size());


всё правильно до байта
и безо всяких \0
...
Рейтинг: 0 / 0
type-rich инициализация
    #39894389
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Естественно, если вектор содержит объекты с динамической памятью, то размеры элементов нужно считать аналогичным образом в зависимости от конкретного типа.

Еще нужно учитывать, что объекты типа vector string обычно выделяют память с запасом.
...
Рейтинг: 0 / 0
24 сообщений из 74, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / type-rich инициализация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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