Есть класс my_class, в нём поле есть std::vector* data; да нерабочий конструктор: my_class(){data->push_back(0);}
Только код:
class my_class{
private:
std::vector* data;
public:
my_class() { data->push_back(0);}
...….…...…..…...…..…..…..…
}
int main(){
my_class h = new *my_class();
....….…...…..…...…..…..…..…
}
Соответственно, всё ломается при попытке обработать push_back(). Если сначала использовать data->reserve(1), всё ломается при попытке обработать data->reserve(1).
Ниже фото с ошибкой доступа

my_class() {
data = new std::vector<тип>
data->push_back(0);
}
Вы либо используете std::vector и тогда никаких указателей с их new и delete, либо изобретаете собственный велосипед, например:
#include <iostream>
using namespace std;
template<typename Type>
class Vector {
public:
Vector() : n(0), ptr(nullptr) {}
Vector(const size_t n) : n(n), ptr(new Type [n]) {}
Vector(const Vector& vec) : n(vec.size()), ptr(new Type[n]) {
copy(vec.begin(), vec.end(), ptr);
}
Vector(initializer_list<Type> lst) : n(lst.size()), ptr(new Type[n]) {
copy(lst.begin(), lst.end(), ptr);
}
~Vector() {
if (ptr != nullptr) {
delete[] ptr;
ptr = nullptr;
}
}
Vector& operator=(const Vector& vec) {
if (this != &vec) {
delete[] ptr;
n = vec.size();
ptr = new Type[n];
copy(vec.begin(), vec.end(), ptr);
}
return *this;
}
Type& operator[](int i) {
return ptr[i];
}
void push_back(const Type& value) {
Vector<Type> tmp(n + 1U);
copy(begin(), end(), tmp.begin());
tmp.back() = value;
*this = tmp;
}
Type& back() {
return *(ptr + n - 1);
}
size_t size()const {
return n;
}
bool empty()const {
return n == 0 || ptr == nullptr;
}
Type* begin()const {
return ptr;
}
Type* end()const {
return ptr + n;
}
private:
size_t n;
Type* ptr;
};
void show(const Vector<int>& box) {
for (auto x : box) cout << x << ' ';
puts("");
}
int main() {
Vector<int> box{ 2, 4, 6, 8 };
show(box);
box.push_back(1);
box.push_back(3);
box.push_back(5);
box.push_back(7);
show(box);
box[2] = 123;
show(box);
Vector<int> vec = box;
vec.push_back(25);
for (auto i = 0U; i < vec.size(); ++i) cout << vec[i] << ' ';
puts("");
system("pause > nul");
}
vector <ТИП ДАННЫХ> data;
Про delete: вообще - да. (Хотя и то не всегда (если, например, сервер работает со статичной структурой)) (могу нести бред)
Но как относится к данной проблеме delete?
Проблема-то останется (