Я ожидаю, что этот код напечатает «Hello world» - «Hello», когда память освобождена, и «world» в main
. Однако «Hello» никогда не печатается, а это означает, что мой деаллокатор не вызывается. Как правильно это реализовать?
#include <iostream>
#include <vector>
class MyAllocator : public std::allocator<uint8_t>
{
public:
void deallocate(uint8_t* data, std::size_t size)
{
std::cout << "Hello ";
std::allocator<uint8_t>::deallocate(data, size);
}
};
int main()
{
{
std::vector<uint8_t, MyAllocator> v(100);
}
std::cout << "world\n";
return 0;
}
Я предполагаю, что он просто вызывает функцию по умолчанию std::allocator<uint8_t>::deallocate()
, но я не вижу способа предотвратить это и заставить ее вызывать мою функцию.