Я начинаю программист, и у меня есть вопрос о функции, которая возвращает указатель на массив двойников в C++. Функция принимает два массива и объединяет каждый элемент, например, в сумму векторов.Возвращает указатель на массив из функции в C++?
Я думаю, что правильный способ сделать это ....
double *myfunction(double *x, double *y, int n){
double *r = new double[n];
for(int i=0;i<n;i++){
r[i] = x[i]+y[i];
}
return r;
}
Проблема заключается в том, что я использую эту функцию в то время как петли в основной функции как этот
int main(){
double *x, *y, *s;
x = new double[2];
y = new double[2];
x = {1,1};
y = {2,2};
while(/*some condition */){
/*some process...*/
s = myfunction(x,y, 2);
/*some process...*/
}
delete[] x;
delete[] y;
delete[] s;
}
Мои Вопрос в том, что происходит с утечкой памяти? Каждый раз, когда я использую «myfunction» (внутри цикла while), я резервирую память для переменной «s», это означает, что если цикл while выполняется 5 раз, то программа резервирует 5 раз память для переменной «?
Существует ли способ сделать это (вернуть указатель на массивы из функции и использовать эту функцию внутри цикла)?
Благодарим вас за продвижение.
'std :: unique_ptr s (myfunction (x, y, 2)) ;, но, честно говоря, я бы использовал' std :: vector' из get-go for * all * динамические распределения в этом коде. –
WhozCraig
Является ли 'x = {1, 1}' действительным синтаксисом? – immibis
@WhozCraig Должен быть 'std :: unique_ptr'? –
songyuanyao