У меня есть класс с переменным-членомПовреждения кучи при использовании make_shared
shared_ptr<short> m_p_data;
я получаю повреждение кучи, когда я использую этот конструктор:
Volume2D(const int dimX, const int dimY) :m_dimX{ dimX }, m_dimY{ dimY }, m_p_data{ make_shared<short>(dimX*dimY) } {
}
но нет повреждения кучи, если я сделаю это вместо:
Volume2D(const int dimX, const int dimY) :m_dimX(dimX), m_dimY(dimY) {
m_p_data.reset(new short[dimX*dimY]);
}
Чтобы быть более конкретным, вот код, который портит кучу:
Volume2D vol(10, 1);
for (auto i = 0; i < 10; ++i) {
vol(i, 0) = i;
cout << "value = " << vol(i, 0) << endl;
}
return 0;