Visual Studio не объясняет мне ничего, он просто ломает и посылает мне удобно в operator delete
реализации ....Необъяснимого исключения брошенного вызывающего DEALLOCATE из пользовательского распределителя
Почему не в состоянии освободить?
#include <iostream>
template<typename T>
struct Allocator
{
using size_type = std::size_t;
using pointer = T*;
pointer allocate(size_type n)
{
return static_cast<pointer>(::operator new(n * sizeof(T)));
}
void deallocate(pointer p)
{
::operator delete((void*)p);
}
};
int main()
{
Allocator<int> al;
int a = 5;
int* p = al.allocate(1);
p = &a;
al.deallocate(p);
}
Эта простая программа вы показываете * необходимо * работа только хорошо. Вы делаете то, что не показываете нам? Если вы включите дополнительные предупреждения, вы получите их? –
@JoachimPileborg Извинения. Пропустил несколько деталей. Ред. – DeiDei
Итак, вы освобождаете переменную с автоматическим хранилищем и задаетесь вопросом, почему она ломается? – StoryTeller