int *arr = NULL;
My() {
this->arr = new int[10];
if (this->arr) {
for (int i = 0; i < 10; ++i)
this->arr[i] = i;
printf("Fill\n");
}
printf("Create\n");
}
~My() {
if (this->arr) {
delete[] this->arr;
this->arr = NULL;
printf("Free\n");
}
}
};
int func() {
int c;
My a = My();
c = a.arr[5];
for (int i = 0; i < 10; ++i) {
printf("a[%d] = %d, ", i, a.arr[i]);
}
printf("\n");
return c;
}
int main(void) {
int c = 0;
c = func();
printf("C = %i\n", c);
return (0);
}
Валгринд показывает что есть один не освобожденный блок
==5460== HEAP SUMMARY:
==5460== in use at exit: 72,704 bytes in 1 blocks
==5460== total heap usage: 3 allocs, 2 frees, 73,768 bytes allocated
==5460==
==5460== LEAK SUMMARY:
==5460== definitely lost: 0 bytes in 0 blocks
==5460== indirectly lost: 0 bytes in 0 blocks
==5460== possibly lost: 0 bytes in 0 blocks
==5460== still reachable: 72,704 bytes in 1 blocks
==5460== suppressed: 0 bytes in 0 blocks
Почему там есть один лик ?
это не лик , still reachable же
ты хотел сказать "имеется такой говнокод"?
Иди читай про RAII, копирование и перемещение
Конструктор копирования и оператор присваивания нужно определять...
Обсуждают сегодня