Корректная работа с памятью С++
Вопрос (A):
void Fun(void){
int *a = new int[10];
int *b = new int[10];
CopyMemory(b, a, 10);
}
Если в дальнейшем мы не используем массив a[]
:
- Мы должны освободить память:
delete[] a
? - А если вместо 1 напишем
a = NULL
? - И если не выполним ни 1, ни 2 а просто выйдем из функции
Fun
?
Вопрос (B):
void Fun(int **c){
int *a = new int[10];
int *b = new int[100];
CopyMemory(b, a, 10);
*c = b;
delete[] a;
}
Так будет правильно?
Вопрос (С):
int *a = new int[10];
int *b = new int[100];
CopyMemory(b, a, 10);
delete[] a;
a = b;
Здесь всё корректно?
Источник: Stack Overflow на русском