Нужен массив double-ов. Количество элементов определяется только во время выполнения программы - поэтому в стеке создать не получится. Необходимо его выделять динамически.
Проблема в том, что если создавать в куче, то придется на выходе из функции его освобождать. Выходов из функций несколько - через время могут появиться еще. Уже звучит не очень.
Появилась идея сделать вот так:
int numbElem = /*run time calc */;
std::unique_ptr<double> massive(new double[numbElem]);
Как будто все норм, но решил спросить - так делать нормально? Будут ли утечки памяти в таком случае?
Что-то мне кажется, что вы хотите
int numbElem = /*run time calc */;
std::unique_ptr<double[]> massive(new double[numbElem]);
А так - все нормально.
"По-моему, так". (с) Пух
P.S. Но, в принципе, то же самое можно достичь и другими, более простыми способами. Но об этом уже сказали в комментариях..
Всем спасибо за помощь) В комментариях посоветовали использовать stl - решил мою проблему метод std::vector::data
UPD: Просили расписать подробнее: Необходимо было использовать библиотечную функцию, которая принимала размер массива и указатель на начало массива -- например void function(int, const double*).
Почему-то у меня в тот момент в голове надежно закрепилась мысль - "Нужен именно массив". В стеке создать этот массив не получится из за того, что его размер не известен на стадии компиляции, а мне не хотелось думать о том, чтобы вручную освобождать на всех выходах динамический массив. В результате появилось сомнительное решение (смотри таск), которое вызывало вопросы - с чем я и пришел сюда. В комментариях справедливо заметили - "почему не std::vector". Этот вопрос решил все проблемы - теперь в качестве первого параметра передается vector::size, а в качестве второго - vector::data, который возвращает указатель на массив, выделенный в куче. Контейнер сам занимается выделением и освобождением этой памяти - мне не пришлось с этим возиться на всех выходах функции.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу свой http-сервер, для обработки запросов использую классическую схемy: на каждый запрос устанавливается отдельное соединение в отдельном...
Для написания каких программ может понадобится параметры функции main argc argv ?