Проблема в строках ниже в конструкторе копирования Alma
v= (int*) malloc(size * sizeof(int));
size=a.size;
при вызове malloc
Какое значение size
?Он не определен, поэтому этот вызов приводит к неопределенному поведению.size=a.size
должен называться первым.
size=a.size;
v= (int*) malloc(size * sizeof(int));
Вторая проблема, вы выделяете память с помощью malloc
C-функции, но почему вы удаляете с помощью delete
?Это не согласуется, когда вы используете malloc
, вам следует вызвать free
для удаления памяти.
free(v);
Вы можете прочитать о правиле трех и рассмотреть возможность использования деструктора virtual
в базовом классе.