тогда скажите мне как присвоить адрес первого элемента переменной text, а не ее адресу
const char **text; - это определение переменной text с типом модифицируемого указателя на модифицируемый указатель на константный символ.const char *smth = "some"; - это определение переменной smth с типом модифицируемого указателя на константный символ. Переменная инициализируется адресом размещения строкового литерала "some".text = &smth; - у переменной smth берется адрес. Это будет значение с типом const char **.malloc память, тебе стоит и оперировать с указателями соответствующим образом.text, т.е. *text, будет иметь тип const char *. Этот тип уже согласуется с типом smth.*text = smth; - вот так ты запишешь адрес размещения литерала в выделенную через malloc память, которую ниже и сможешь удалить через free. text = &smth;std::unique_ptr<const char* []> и вообще не иметь дело с new и delete. GetInstance( index ) = T{ std::forward<Args>( args )... };T* instance = &GetInstance( index );
instance->~T();
new( instance ) T{ std::forward<Args>( args )... };new в никуда, который рискует быть вырезанным в результате оптимизации и явный вызов деструктора - это проще? std::aligned_storage. buffer[sizeof(T) * head] давай подскажу еще один подход.struct alignas( 16 ) Vector2 final
{
float x;
float y;
};sizeof(T) * head найдет для него неправильное место, не выравненное. А ведь выравнивание может быть и на 64, и на 128, и на 256 байт.std::aligned_storage{?] в качестве ячейки своего ЦБ. if (size < maxSize) и для чего существует второй - который под первым.size и maxSize. А так же - почему функция называется add и имеет такие параметры.
Имя переменной должно всегда отражать смысл существования этой переменной. Имя должно рассказывать читателю о том, для чего создано то, что этим именем названо. Какую функцию оно выполняет и для каких целей может быть использовано.
Функция имени - передавать читателю смысл. Не передающий свой смысл код должен быть удален или исправлен так чтобы он начал свой смысл передавать.