Changeset 21b9c3
- Timestamp:
- Oct 6, 2009, 11:15:50 AM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- be90f1
- Parents:
- c0917c
- Location:
- src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/helpers.cpp
rc0917c r21b9c3 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 } -
src/helpers.hpp
-
Property mode
changed from
100755
to100644
rc0917c r21b9c3 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
-
src/memoryallocator.hpp
rc0917c r21b9c3 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; -
src/memoryusageobserver.cpp
rc0917c r21b9c3 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 } -
src/memoryusageobserver.hpp
rc0917c r21b9c3 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: -
src/memoryusageobserverunittest.cpp
rc0917c r21b9c3 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 -
src/memoryusageobserverunittest.hpp
rc0917c r21b9c3 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.