Changeset 729279
- Timestamp:
- Oct 6, 2009, 11:15:50 AM (16 years ago)
- Children:
- 53f32e
- Parents:
- bf497f
- Location:
- molecuilder/src
- Files:
-
- 7 edited
-
helpers.cpp (modified) (1 diff)
-
helpers.hpp (modified) (1 diff, 1 prop)
-
memoryallocator.hpp (modified) (1 diff)
-
memoryusageobserver.cpp (modified) (2 diffs)
-
memoryusageobserver.hpp (modified) (1 diff)
-
memoryusageobserverunittest.cpp (modified) (9 diffs)
-
memoryusageobserverunittest.hpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/helpers.cpp
rbf497f r729279 144 144 }; 145 145 146 /** 147 * Frees all memory registered by the memory observer and calls exit(225) afterwards. 148 */ 149 void performCriticalExit() { 150 map<void*, size_t> pointers = MemoryUsageObserver::getInstance()->getPointersToAllocatedMemory(); 151 for (map<void*, size_t>::iterator runner = pointers.begin(); runner != pointers.end(); runner++) { 152 Free(((void**) &runner->first)); 153 } 146 154 155 exit(255); 156 } -
molecuilder/src/helpers.hpp
-
Property mode
changed from
100755to100644
rbf497f r729279 51 51 void flip(double *x, double *y); 52 52 int pot(int base, int n); 53 //void * Malloc(size_t size, const char* output);54 //void * Calloc(size_t size, const char* output);55 //void * ReAlloc(void * OldPointer, size_t size, const char* output);56 //char* MallocString(size_t size, const char* output);57 //void Free(void ** buffer, const char* output);58 53 char *FixedDigitNumber(const int FragmentNumber, const int digits); 59 54 bool IsValidNumber( const char *string); 55 static void performCriticalExit(); 60 56 61 57 /********************************************** helpful template functions *********************************/ -
Property mode
changed from
-
molecuilder/src/memoryallocator.hpp
rbf497f r729279 111 111 * \param pointer to the allocated memory range to free; may be NULL, this function is a no-op then 112 112 */ 113 template <typename X> void Free(X** buffer )113 template <typename X> void Free(X** buffer, const char *msg = NULL) 114 114 { 115 115 if ((buffer == NULL) || (*buffer == NULL)) 116 116 return; 117 117 118 MemoryUsageObserver::getInstance()->removeMemory(*buffer );118 MemoryUsageObserver::getInstance()->removeMemory(*buffer, msg); 119 119 free(*buffer); 120 120 *buffer = NULL; -
molecuilder/src/memoryusageobserver.cpp
rbf497f r729279 78 78 * \param pointer to the allocated piece of memory 79 79 */ 80 void MemoryUsageObserver::removeMemory(void* pointer ) {80 void MemoryUsageObserver::removeMemory(void* pointer, const char *msg) { 81 81 map<void*, size_t>::iterator current = memoryUsers.find(pointer); 82 82 83 83 if (current == memoryUsers.end()) { 84 84 cout << "WARNING: There is non-tracked memory to be freed. Pointer " 85 << pointer << " is not registered by MemoryUsageObserver." << endl; 85 << pointer << " is not registered by MemoryUsageObserver"; 86 if (msg != NULL) 87 cout << ": " << msg; 88 cout << "." << endl; 86 89 return; 87 90 } … … 104 107 return maximumSize; 105 108 } 109 110 /** 111 * Gets a map with pointers to the currently allocated memory ranges as keys and 112 * the allocated size as value. 113 */ 114 map<void*, size_t> MemoryUsageObserver::getPointersToAllocatedMemory() { 115 return memoryUsers; 116 } -
molecuilder/src/memoryusageobserver.hpp
rbf497f r729279 28 28 static void purgeInstance(); 29 29 void addMemory(void* pointer, size_t size); 30 void removeMemory(void* pointer );30 void removeMemory(void* pointer, const char *msg = NULL); 31 31 size_t getUsedMemorySize(); 32 32 size_t getMaximumUsedMemory(); 33 map<void*, size_t> getPointersToAllocatedMemory(); 33 34 34 35 protected: -
molecuilder/src/memoryusageobserverunittest.cpp
rbf497f r729279 10 10 #include <cppunit/ui/text/TestRunner.h> 11 11 12 #include "memoryallocator.hpp" 12 13 #include "memoryusageobserver.hpp" 13 14 #include "memoryusageobserverunittest.hpp" … … 41 42 void MemoryUsageObserverTest::getInstanceTwiceReturnsSameInstanceTest() 42 43 { 43 int* i = new int;44 int* i = Malloc<int>(1, "MemoryUsageObserverTest::getInstanceTwiceReturnsSameInstanceTest - i"); 44 45 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 45 46 CPPUNIT_ASSERT_EQUAL(sizeof(int), MemoryUsageObserver::getInstance()->getUsedMemorySize()); … … 52 53 void MemoryUsageObserverTest::getInstanceAfterPurgeInstanceReturnsNewInstanceTest() 53 54 { 54 int* i = new int;55 int* i = Malloc<int>(1, "MemoryUsageObserverTest::getInstanceAfterPurgeInstanceReturnsNewInstanceTest - i"); 55 56 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 56 57 CPPUNIT_ASSERT_EQUAL(sizeof(int), MemoryUsageObserver::getInstance()->getUsedMemorySize()); … … 64 65 void MemoryUsageObserverTest::addAndRemoveMemoryTest() 65 66 { 66 int* i = new int;67 int* i = Malloc<int>(1, "MemoryUsageObserverTest::addAndRemoveMemoryTest - i"); 67 68 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 68 69 CPPUNIT_ASSERT_EQUAL(sizeof(int), MemoryUsageObserver::getInstance()->getUsedMemorySize()); … … 76 77 void MemoryUsageObserverTest::removeNonTrackedMemoryDoesNotCauseACrashTest() 77 78 { 78 int* i = new int;79 int* i = Malloc<int>(1, "MemoryUsageObserverTest::removeNonTrackedMemoryDoesNotCauseACrashTest - i"); 79 80 MemoryUsageObserver::getInstance()->removeMemory(i); 80 81 CPPUNIT_ASSERT_EQUAL((size_t) 0, MemoryUsageObserver::getInstance()->getUsedMemorySize()); … … 86 87 void MemoryUsageObserverTest::addMemoryTwiceTest() 87 88 { 88 int* i = new int;89 int* j = new int;89 int* i = Malloc<int>(1, "MemoryUsageObserverTest::addMemoryTwiceTest - i"); 90 int* j = Malloc<int>(1, "MemoryUsageObserverTest::addMemoryTwiceTest - j"); 90 91 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 91 92 MemoryUsageObserver::getInstance()->addMemory(j, sizeof(int)); 92 93 CPPUNIT_ASSERT_EQUAL(2 * sizeof(int), MemoryUsageObserver::getInstance()->getUsedMemorySize()); 93 };94 }; 94 95 95 96 /** … … 98 99 void MemoryUsageObserverTest::addMemoryAndChangeSizeOfAddedMemoryTest() 99 100 { 100 int* i = new int;101 int* i = Malloc<int>(1, "MemoryUsageObserverTest::addMemoryAndChangeSizeOfAddedMemoryTest - i"); 101 102 MemoryUsageObserver::getInstance()->addMemory(i, 2 * sizeof(int)); 102 103 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 103 104 CPPUNIT_ASSERT_EQUAL(sizeof(int), MemoryUsageObserver::getInstance()->getUsedMemorySize()); 104 };105 }; 105 106 106 107 /** … … 109 110 void MemoryUsageObserverTest::addMemoryChangeSizeOfAddedMemoryAndGetMaximumSizeTest() 110 111 { 111 int* i = new int;112 int* i = Malloc<int>(1, "MemoryUsageObserverTest::addMemoryChangeSizeOfAddedMemoryAndGetMaximumSizeTest - i"); 112 113 MemoryUsageObserver::getInstance()->addMemory(i, 2 * sizeof(int)); 113 114 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 114 115 CPPUNIT_ASSERT_EQUAL(2 * sizeof(int), MemoryUsageObserver::getInstance()->getMaximumUsedMemory()); 115 };116 }; 116 117 117 118 /** … … 120 121 void MemoryUsageObserverTest::addMemoryRemoveMemoryAndGetMaximumSizeTest() 121 122 { 122 int* i = new int;123 int* i = Malloc<int>(1, "MemoryUsageObserverTest::addMemoryRemoveMemoryAndGetMaximumSizeTest - i"); 123 124 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 124 125 MemoryUsageObserver::getInstance()->removeMemory(i); 125 126 CPPUNIT_ASSERT_EQUAL(sizeof(int), MemoryUsageObserver::getInstance()->getMaximumUsedMemory()); 126 }; 127 }; 128 129 /** 130 * UnitTest for getPointersToAllocatedMemory() 131 */ 132 void MemoryUsageObserverTest::getPointersToAllocatedMemoryTest() 133 { 134 int* i = Malloc<int>(1, "MemoryUsageObserverTest::getPointersToAllocatedMemoryTest - i"); 135 MemoryUsageObserver::getInstance()->addMemory(i, sizeof(int)); 136 CPPUNIT_ASSERT_EQUAL(i, (int*) MemoryUsageObserver::getInstance()->getPointersToAllocatedMemory().begin()->first); 137 }; 138 139 127 140 /********************************************** Main routine **************************************/ 128 141 -
molecuilder/src/memoryusageobserverunittest.hpp
rbf497f r729279 24 24 CPPUNIT_TEST ( addMemoryChangeSizeOfAddedMemoryAndGetMaximumSizeTest ); 25 25 CPPUNIT_TEST ( addMemoryRemoveMemoryAndGetMaximumSizeTest ); 26 CPPUNIT_TEST ( getPointersToAllocatedMemoryTest ); 26 27 CPPUNIT_TEST_SUITE_END(); 27 28 … … 39 40 void addMemoryChangeSizeOfAddedMemoryAndGetMaximumSizeTest(); 40 41 void addMemoryRemoveMemoryAndGetMaximumSizeTest(); 42 void getPointersToAllocatedMemoryTest(); 41 43 }; 42 44
Note:
See TracChangeset
for help on using the changeset viewer.
