Changeset b84d5d for src/vector.hpp


Ignore:
Timestamp:
Feb 26, 2010, 9:55:28 AM (16 years ago)
Author:
Frederik Heber <heber@…>
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:
1ec0ac
Parents:
e3cbf9
Message:

FIX: operator implementation of Vector algebra was wrong and caused memory leaks.

  • operator+, operator- and operator* were implemented as creating new Vectors and returning its pointer instead of creating an object and returning it as constant. This would cause memory leaks, as these pointers in complex algebraic expressions would never get free'd.
  • return values of operatorx= with x in {+,-,*} have been made const (suggested by Meyers' Effective C++)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/vector.hpp

    re3cbf9 rb84d5d  
    8080  void WrapPeriodically(const double * const M, const double * const Minv);
    8181
    82   Vector& operator=(const Vector &src);
    83 
    8482};
    8583
    8684ostream & operator << (ostream& ost, const Vector &m);
    8785bool operator==(const Vector& a, const Vector& b);
    88 Vector& operator+=(Vector& a, const Vector& b);
    89 Vector& operator-=(Vector& a, const Vector& b);
    90 Vector& operator*=(Vector& a, const double m);
    91 Vector& operator*(const Vector& a, const double m);
    92 Vector& operator*(const double m, const Vector& a);
    93 Vector& operator+(const Vector& a, const Vector& b);
    94 Vector& operator-(const Vector& a, const Vector& b);
     86const Vector& operator+=(Vector& a, const Vector& b);
     87const Vector& operator-=(Vector& a, const Vector& b);
     88const Vector& operator*=(Vector& a, const double m);
     89Vector const operator*(const Vector& a, const double m);
     90Vector const operator*(const double m, const Vector& a);
     91Vector const operator+(const Vector& a, const Vector& b);
     92Vector const operator-(const Vector& a, const Vector& b);
    9593
    9694
Note: See TracChangeset for help on using the changeset viewer.