Функция, что возвращает динамический массив

Функция возвращает динамический массив
int *A1 (BYTE val) {
    int *mass = new int[8];
   //инициализация массива
   return mass;
}
Правильно ли я присваиваю её значения и правильно ли удаляю:
    int *MassByteBlock;
 
for(int i=0;i<x;i++) {
     MassByteBlock=A1(Y);
     // работаю с MassByteBlock
     delete[] MassByteBlock;
 
     MassByteBlock=A1(G);
     // работаю с MassByteBlock
     delete[] MassByteBlock;
}
Эй, кто нибудь! Ответь на вопрос! И прекрати мой словесный понос!
2 ответа

Функция возвращает не динамический массив, а указатель на него. А так вроде правильно. По крайней мере пример, основанный на вашем участке кода, работает:
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int* mass_new(int a) {
    int *mass = new int[a];
    return mass;
}
 
void r(int a, int* mass) {
    for(int i=0; i<a; i++)
        mass[i] = rand()%50;
}
 
int main() {
    int* mass;
    for(int j=0; j<5; j++) {
        mass = mass_new(5);
        r(5, mass);
        for(int i=0; i<5; cout << mass[i++] << endl );
        delete [] mass;
        cout << endl;                                                                                                                          
        mass = mass_new(6);
        r(6, mass);
        for(int i=0; i<5; cout << mass[i++] << endl );
        cout << endl; 
        delete [] mass;
    }
    return 0;
}


да, правильно. Но отдавай себе отчет в том, что new и delete у тебя на разных уровнях находятся, что не есть хорошо.