Size: a a a

Compiler Development

2021 July 12

I

InsidE in Compiler Development
T это же некий тип, чего там компилятору не мочь?
источник

A

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

SS

Sergey Skvortsov in Compiler Development
Ну а зачем сложнее, если все идеально просто
источник

а

а это кто in Compiler Development
delete[] должен вызвать деструктор типа T 10 раз, по одному разу для каждого элемента массива по указателю arr. вопрос в том откуда delete[] узнаёт что в массиве 10 элементов
источник

I

InsidE in Compiler Development
еще раз аллокатор за этим следит
источник

I

InsidE in Compiler Development
реализация кучи
источник

SS

Sergey Skvortsov in Compiler Development
Нет
источник

I

InsidE in Compiler Development
не аллокатор оси, а цппшный
источник

SS

Sergey Skvortsov in Compiler Development
Нет
источник

I

InsidE in Compiler Development
да
источник

I

InsidE in Compiler Development
в стандарте это compiler specific
источник

I

InsidE in Compiler Development
аллокатор оси ток знает размер всего блока
источник

П

Пух in Compiler Development
Там рядом с массивом же инфа кладется, чот такое
источник

I

InsidE in Compiler Development
а скока в нем элементов знает аллокатор конкретной реализации цпп
источник

I

InsidE in Compiler Development
в гцц так точно, за других не скажу
источник

I

InsidE in Compiler Development
в конец кучи дописывается метаинфа
источник

A

Arelav in Compiler Development
Ну например если вызов delete[] рядом можно например попросить меньше памяти, и положить размер в регистр.
С компайлтаймовыми размерами опять таки если компилятор видит и new и delete можно оптимизировать.
Ну тут вероятно не особо нужно + просто компилятору нужно тогда как то установить связь между вызовом new и delete.
источник

A

Arelav in Compiler Development
Нет, аллокатор знает только сколько байт он отдал пользователю аллокатора
источник

I

InsidE in Compiler Development
аллокатор дописывает метаинфу в конец кучи
источник

I

InsidE in Compiler Development
потом он эту инфу юзает для удаления
источник