I create a program which enter a dynamic array of integer. I want to add a copy constructor, in order to become better acquainted with its functionality, but always when try to run program, Visual Studio open a new tab and get delete_scalar.cpp
Error, so if anyone had a similar problem it would help me.
Here' s code:
DynamicArray.h
#pragma once
class DynamicArray
{
private:
int* arr;
int capacity;
int number_of_elements;
public:
DynamicArray(int capacity = 1);
DynamicArray(const DynamicArray&);
~DynamicArray();
void add(DynamicArray* arr, int value);
void print(DynamicArray* arr);
};
DynamicArray.cpp
#include "DynamicArray.h"
#include <iostream>
DynamicArray::DynamicArray(int capacity): capacity(capacity),number_of_elements(0),arr(new int[capacity])
{}
DynamicArray::~DynamicArray()
{
delete[] this->arr;
this->arr = nullptr;
this->number_of_elements = 0;
this->capacity = 0;
}
DynamicArray::DynamicArray(const DynamicArray& other) : capacity(other.capacity),number_of_elements(other.number_of_elements),arr(new int[other.number_of_elements])
{
for (int i = 0; i < number_of_elements; i++)
{
this->arr[i] = other.arr[i];
}
}
main.cpp
int main()
{
DynamicArray obj(5);
DynamicArray obj2(5);
obj.add(&obj,22);
obj.add(&obj,12);
obj.add(&obj,18);
obj.add(&obj,11);
obj.print(&obj);
obj2=obj;
obj2.print(&obj2);
}
Error delete_scalar.cpp
_CRT_SECURITYCRITICAL_ATTRIBUTE
void __CRTDECL operator delete(void* const block) noexcept
{
#ifdef _DEBUG
_free_dbg(block, _UNKNOWN_BLOCK);
#else
free(block);
#endif
}
Thanks in advance!
Best regards!