Size: a a a

Compiler Development

2021 July 12

SS

Sergey Skvortsov in Compiler Development
Везде просто делают

ptr = (char*)malloc(count * sizeof(T) + sizeof(size_t));
UnalignedWrite<size_t>(ptr, count);
ptr += sizeof(size_t);

https://godbolt.org/z/9GvGdPjG3
источник

I

InsidE in Compiler Development
вообще с вопроса не понятно, там про именно как аллоцируется память или про жизненный цикл
источник

SS

Sergey Skvortsov in Compiler Development
Вопрос трактуется однозначно
источник

I

InsidE in Compiler Development
это про жизненный цикл
источник

I

InsidE in Compiler Development
если это однозначно, тогда покажите в своем примере, где там отслеживание жизненного цикла, а то я только выделение памяти вижу
источник

B

Brenoritvrezorkre in Compiler Development
"линкедин — это тиндер наоборот"
источник

A

Arelav in Compiler Development
Ну я же написал, что такой вариант понятен, просто задумался может кто то что то интересное придумал, и поэтому спросил знает ли кто то как например сделано в кланге.
источник

SS

Sergey Skvortsov in Compiler Development
Вот именно так и сделано везде
источник

A

Arelav in Compiler Development
А вы смотрели? Или это предположение? Просто предполагать я итак мог
источник

I

InsidE in Compiler Development
и опять таки, в цпп размер массива это часть его типа
источник

а

а это кто in Compiler Development
это про количество объектов
источник

SS

Sergey Skvortsov in Compiler Development
Вон ссылочка на годболт
источник

I

InsidE in Compiler Development
и у вас баг в этих трех строчках кода, вы не проверили возвращенный указатель на null
источник

SS

Sergey Skvortsov in Compiler Development
Конечно, это псевдокод:)
источник

SS

Sergey Skvortsov in Compiler Development
Там вообще не маллок, а operator new[], но это не важно и вообще оффтоп
источник

I

InsidE in Compiler Development
размер массива это часть его типа в цпп, этой информацией компилятор пользуется когда вызывается delete на массиве указателей
источник

I

InsidE in Compiler Development
т.е. это чисто компайл тайм фича
источник

а

а это кто in Compiler Development
В примере ниже после выделения массива через new[] тип стирается до указателя T*, но delete[] всё равно работает корректно и удаляет 10 элементов типа T

T *arr = new T[10];

delete[] arr;
источник

SS

Sergey Skvortsov in Compiler Development
Кажется, пора в @supapro:)
источник

а

а это кто in Compiler Development
значит количество элементов хранится в рантайме
источник