Для C следующее создаст список, содержащий одну координату:
myList = malloc(sizeof(Coordinate));
Если вы хотите выделить массив размером n, выполните следующие действия:
myList = malloc(n * sizeof(Coordinate));
В C ++ код для массива размера n выглядит следующим образом:
myList = new Coordinate[n];
В случае C ++ ваш класс должен иметь конструктор по умолчанию, который класс Coordinate
имеет неявно. Однако для C ++ я настоятельно рекомендую использовать std::vector<Coordinate>
вместо массива, управляемого вручную.
Кроме того, вы можете использовать malloc()
для выделения памяти также и в C ++, но он выделяет только необработанную память, тогда как использование new также вызовет вызов конструктора (ов). В случае вашей структуры нет разницы, так как это структура POD и не требует конструктора. Также имейте в виду, что если вы выделяете память в C ++ с помощью malloc()
, вы должны использовать free()
для ее освобождения; если вы используете new
, вам нужно использовать delete
- их смешивание может привести к очень интересным результатам, которые не забавны для отладки. С new
вы также должны убедиться, что вы соответствуете правильному типу вызова. Все, что создано с помощью new
, необходимо очистить с помощью delete
, а все, что создано с использованием массива new, как в моем примере выше, необходимо удалить с помощью delete[]
.
.