#include <iostream> #include <kcpp.hpp> #include <kcpp_memory.hpp> class MyListener : public kcpp::MemoryListener { public: MyListener() {} ~MyListener() {} void notifyError(const kcpp::MemoryEntry& entry, const char* msg) { std::cout << entry.file << ":" << entry.line << "(" << entry.func << "):[size=" << entry.size << "] " << msg << std::endl; } }; bool handler(const kcpp::MemoryEntry& entry) { std::cout << "# " << entry.file << ":" << entry.line << ":(" << entry.size << ")" << std::endl; return false; } struct alignas(256) OverAligned { int val[8192]; char cval[8192]; }; int main() { MyListener listener; kcpp::MemoryManager::setListener(listener); char* tmp1 = new char; char* tmp2 = new (std::nothrow) char; OverAligned* tmp3 = new OverAligned; tmp3->val[0] = 10; tmp3->val[8000] = 8010; tmp3->cval[0] = 'A'; tmp3->cval[1] = '\0'; std::cout << tmp3->cval << std::endl; char* tmp4 = new char[5]; tmp4[0] = 'X'; tmp4[1] = 'Y'; tmp4[2] = 'Z'; tmp4[3] = '\0'; char* ptr = static_cast<char*>(malloc(10)); char* ptr2 = static_cast<char*>(malloc(20)); char* ptr3 = static_cast<char*>(realloc(ptr2, 15)); char* ptr4 = static_cast<char*>(realloc(tmp1, 55)); std::cout << "#####################################" << std::endl; // kcpp::MemoryManager::entries(handler); kcpp::MemoryManager::dump(std::cout, 4, true, true, 80); //, 100, true, true); std::cout << "#####################################" << std::endl; kcpp::MemoryManager::freeif(handler); std::cout << "#####################################" << std::endl; // free(ptr3); std::cout << "-- 1" << std::endl; free(ptr4); std::cout << "-- 2" << std::endl; free(tmp2); std::cout << "-- 3" << std::endl; std::cout << "========== delete OverAligned" << std::endl; delete tmp3; std::cout << "========== END delete OverAligned" << std::endl; // operator delete(tmp3); std::cout << tmp4 << std::endl; std::cout << "========== delete tmp4[5]" << std::endl; delete[] tmp4; std::cout << "========== END delete tmp4[5]" << std::endl; (void)(ptr); (void)(ptr2); (void)(ptr3); (void)(ptr4); char* tmp5 = new char[100]; tmp5[0] = 'A'; tmp5[1] = '\0'; std::cout << tmp5[0] << std::endl; delete [] tmp5; return 0; }