fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string.h>
  4. #include <memory>
  5. using namespace std;
  6.  
  7. template< typename T >
  8. struct array_deleter
  9. {
  10. void operator ()(T const * x) { delete[] x; }
  11. };
  12.  
  13. class MemoryPage
  14. {
  15. size_t size;
  16. std::shared_ptr<char> buf;
  17.  
  18. public:
  19. explicit MemoryPage(int sz=8)
  20. : size(sz)
  21. , buf (new char[sz], array_deleter<char>())
  22. {
  23. std::cout<<"buffer='" << buf<<"'"<<" start address "<<(void *)buf.get()<<std::endl;
  24.  
  25. // std::cout<<"sz=" << size<<std::endl;
  26. // for(size_t i=0;i <size; i++){
  27. // buf[i]='a'+32/sz - 1 ;
  28. // }
  29. }
  30.  
  31. // ----- Деструктор вообще не нужон --------
  32. // ~MemoryPage(){
  33. // if(buf[0]!=null ) {
  34. // std::cout<<"buffer='" << buf<<"'"<<" delete from address "<<(void *)buf.get()<<"\t"<< size<<" bytes "<<std::endl;
  35. // delete[] buf;
  36. // }
  37. // }
  38. };
  39. using namespace std;
  40. int main()
  41. {
  42. vector<MemoryPage> vm;
  43. MemoryPage memoryPage(1024);
  44. vm.push_back(MemoryPage(32));
  45. vm.push_back(MemoryPage(16));
  46. vm.push_back(MemoryPage(8));
  47. cout<<" destroy vector "<< endl;
  48. }
  49.  
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
buffer='' start address 0x90d7a10
buffer='' start address 0x90d7e30
buffer='' start address 0x90d7e80
buffer='' start address 0x90d7e70
 destroy vector