Бит путают в использовании нового для динамического выделения памяти.Динамическое выделение в C++ с использованием «нового»
например. Если мне нужно выделить память для 100 Интса (при условии, ИНТ 4 байта), я должен сказать:
int *ptr = new int[100];
или
int *ptr = new int[100*4]; //assuming int is 4 bytes.
Basially новый оператор выделяет память в байтах или что много байт типа T, используемого при вызове нового оператора?
Если у моего класса нет функции-члена распределителя, & Мне нужно выделить массив объекта этого типа, будет ли новый oeprator найти sizeof (тип класса) и соответственно распределить или как это сделать Работа?
EDIT:
Извините за складчину несколько вопросов, но связанные с ним:
будет этот кусок кода отлично работает, если я хочу выделить 2D массив размером [100] [4] от ints
спасибо.
-AD
@Fred: Спасибо за быстрый ответ. Поскольку мой код orignal представляет собой смесь C + C++ (80%/20%), и, откровенно говоря, не очень хорошо разбирался в C++ как C. На самом деле не думал об этом. Но можете ли вы указать пример короткого тестового кода для использования std :: vector? – goldenmean
@goldenmean: Лучше этого я могу указать на несколько: см. * Ускоренный C++ *, * Программирование: принципы и практика с использованием C++ * или [другие] (http://stackoverflow.com/q/388242). –
будет ли эта часть кода работать нормально, если я хочу выделить 2D-массив размера [100] [4] из ints: int * arr = new int [100] [4]; – goldenmean