55 lines · cpp
1//2// 11588.cpp3//4 5#include <iostream>6 7class StgInfoTable {};8 9class StgHeader10{11private:12 StgInfoTable* info;13public:14 StgHeader()15 {16 info = new StgInfoTable();17 }18 ~StgHeader()19 {20 delete info;21 }22};23 24class StgClosure25{26private:27 StgHeader header;28 StgClosure* payload[1];29public:30 StgClosure(bool make_payload = true)31 {32 if (make_payload)33 payload[0] = new StgClosure(false);34 else35 payload[0] = NULL;36 }37 ~StgClosure()38 {39 if (payload[0])40 delete payload[0];41 }42};43 44typedef unsigned long long int ptr_type;45 46int main()47{48 StgClosure* r14_ = new StgClosure();49 r14_ = (StgClosure*)(((ptr_type)r14_ | 0x01)); // set the LSB to 1 for tagging50 ptr_type r14 = (ptr_type)r14_;51 int x = 0;52 x = 3;53 return (x-1); // Set breakpoint here.54}55