Skip to content

Commit 6dfceaa

Browse files
committed
let COptions delete what they new
1 parent 77359c6 commit 6dfceaa

3 files changed

Lines changed: 30 additions & 145 deletions

File tree

Common/include/CConfig.hpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8137,11 +8137,6 @@ class CConfig {
81378137
*/
81388138
void SetConfig_Options();
81398139

8140-
/*!
8141-
* \brief Set the config options.
8142-
*/
8143-
void SetRunTime_Options(void);
8144-
81458140
/*!
81468141
* \brief Set the config file parsing.
81478142
*/

Common/include/option_structure.inl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,12 @@ public:
227227
field(option_field),
228228
mySize(list_size),
229229
name(option_field_name) {
230+
field = nullptr;
231+
}
232+
233+
~COptionEnumList() {
234+
delete [] field;
235+
field = nullptr;
230236
}
231237

232238
string SetValue(const vector<string>& option_value) override {
@@ -320,6 +326,13 @@ public:
320326
name(option_field_name),
321327
mySize(list_size),
322328
typeName(type_name) {
329+
field = nullptr;
330+
}
331+
332+
~COptionScalarList() {
333+
delete [] field;
334+
// prevent double free
335+
field = nullptr;
323336
}
324337

325338
string SetValue(const vector<string>& option_value) final {
@@ -1069,13 +1082,15 @@ template <class T>
10691082
struct CStringValuesListHelper {
10701083
static T resize(unsigned short) { return T(); }
10711084
static T& access(T& val, unsigned short) { return val; }
1085+
static void clear(T&) {}
10721086
};
10731087

10741088
// Specialization for pointer types (multiple values per string).
10751089
template <class T>
10761090
struct CStringValuesListHelper<T*> {
10771091
static T* resize(unsigned short n) { return new T[n]; }
10781092
static T& access(T* ptr, unsigned short i) { return ptr[i]; }
1093+
static void clear(T* ptr) { delete [] ptr; }
10791094
};
10801095

10811096
// Class where the option is represented by (string, N * "some type", string, N * "some type", ...)
@@ -1092,10 +1107,24 @@ public:
10921107
COptionStringValuesList(string name_, unsigned short& size_, string*& strings_,
10931108
Type*& values_, unsigned short& num_vals_) :
10941109
name(name_), size(size_), strings(strings_), values(values_), num_vals(num_vals_) {
1110+
strings = nullptr;
1111+
values = nullptr;
10951112
}
10961113

10971114
COptionStringValuesList(string name_, unsigned short& size_, string*& strings_, Type*& values_) :
10981115
name(name_), size(size_), strings(strings_), values(values_), num_vals(optional_num_vals) {
1116+
strings = nullptr;
1117+
values = nullptr;
1118+
}
1119+
1120+
~COptionStringValuesList() {
1121+
delete [] strings;
1122+
strings = nullptr;
1123+
for (unsigned short i = 0; i < size; ++i) {
1124+
CStringValuesListHelper<Type>::clear(values[i]);
1125+
}
1126+
delete [] values;
1127+
values = nullptr;
10991128
}
11001129

11011130
string SetValue(const vector<string>& option_value) override {

Common/src/CConfig.cpp

Lines changed: 1 addition & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -7606,6 +7606,7 @@ void CConfig::SetSurface_Movement(unsigned short iMarker, unsigned short kind_mo
76067606
nKind_SurfaceMovement++;
76077607

76087608
}
7609+
76097610
CConfig::~CConfig(void) {
76107611

76117612
unsigned long iDV, iMarker, iPeriodic, iFFD;
@@ -7619,62 +7620,12 @@ CConfig::~CConfig(void) {
76197620
delete [] TimeDOFsADER_DG;
76207621
delete [] TimeIntegrationADER_DG;
76217622
delete [] WeightsIntegrationADER_DG;
7622-
delete [] RK_Alpha_Step;
7623-
delete [] MG_PreSmooth;
7624-
delete [] MG_PostSmooth;
76257623

76267624
/*--- Free memory for Aeroelastic problems. ---*/
76277625

76287626
delete[] Aeroelastic_pitch;
76297627
delete[] Aeroelastic_plunge;
76307628

7631-
/*--- Free memory for airfoil sections ---*/
7632-
7633-
delete [] LocationStations;
7634-
7635-
/*--- motion origin: ---*/
7636-
7637-
delete [] MarkerMotion_Origin;
7638-
7639-
delete [] MoveMotion_Origin;
7640-
7641-
/*--- translation: ---*/
7642-
7643-
delete [] MarkerTranslation_Rate;
7644-
7645-
/*--- rotation: ---*/
7646-
7647-
delete [] MarkerRotation_Rate;
7648-
7649-
/*--- pitching: ---*/
7650-
7651-
delete [] MarkerPitching_Omega;
7652-
7653-
/*--- pitching amplitude: ---*/
7654-
7655-
delete [] MarkerPitching_Ampl;
7656-
7657-
/*--- pitching phase: ---*/
7658-
7659-
delete [] MarkerPitching_Phase;
7660-
7661-
/*--- plunging: ---*/
7662-
7663-
delete [] MarkerPlunging_Omega;
7664-
7665-
/*--- plunging amplitude: ---*/
7666-
delete [] MarkerPlunging_Ampl;
7667-
7668-
/*--- reference origin for moments ---*/
7669-
7670-
delete [] RefOriginMoment_X;
7671-
delete [] RefOriginMoment_Y;
7672-
delete [] RefOriginMoment_Z;
7673-
7674-
/*--- Free memory for Harmonic Blance Frequency pointer ---*/
7675-
7676-
delete [] Omega_HB;
7677-
76787629
/*--- Marker pointers ---*/
76797630

76807631
delete[] Marker_CfgFile_GeoEval;
@@ -7734,29 +7685,13 @@ CConfig::~CConfig(void) {
77347685
delete[] Marker_CfgFile_SobolevBC;
77357686
delete[] Marker_All_SobolevBC;
77367687

7737-
delete[] Marker_DV;
7738-
delete[] Marker_Moving;
7739-
delete[] Marker_Monitoring;
7740-
delete[] Marker_Designing;
7741-
delete[] Marker_GeoEval;
7742-
delete[] Marker_Plotting;
7743-
delete[] Marker_Analyze;
77447688
delete[] Marker_WallFunctions;
7745-
delete[] Marker_ZoneInterface;
7746-
delete[] Marker_CHTInterface;
7747-
delete[] Marker_PyCustom;
77487689
delete[] Marker_All_SendRecv;
7749-
delete[] Marker_SobolevBC;
7750-
7751-
delete[] Kind_Inc_Inlet;
7752-
delete[] Kind_Inc_Outlet;
77537690

77547691
delete[] Kind_WallFunctions;
77557692

77567693
delete[] Kind_Wall;
77577694

7758-
delete[] Config_Filenames;
7759-
77607695
if (IntInfo_WallFunctions != nullptr) {
77617696
for (iMarker = 0; iMarker < nMarker_WallFunctions; ++iMarker) {
77627697
if (IntInfo_WallFunctions[iMarker] != nullptr)
@@ -7773,9 +7708,6 @@ CConfig::~CConfig(void) {
77737708
delete[] DoubleInfo_WallFunctions;
77747709
}
77757710

7776-
delete[] Kind_ObjFunc;
7777-
delete[] Weight_ObjFunc;
7778-
77797711
if (DV_Value != nullptr) {
77807712
for (iDV = 0; iDV < nDV; iDV++) delete[] DV_Value[iDV];
77817713
delete [] DV_Value;
@@ -7796,8 +7728,6 @@ CConfig::~CConfig(void) {
77967728
delete [] DegreeFFDBox;
77977729
}
77987730

7799-
delete[] Design_Variable;
7800-
78017731
delete[] Exhaust_Temperature_Target;
78027732
delete[] Exhaust_Pressure_Target;
78037733
delete[] Exhaust_Pressure;
@@ -7826,7 +7756,6 @@ CConfig::~CConfig(void) {
78267756
delete[] Engine_NetThrust;
78277757
delete[] Engine_GrossThrust;
78287758
delete[] Engine_Area;
7829-
delete[] EngineInflow_Target;
78307759

78317760
delete[] ActDiskInlet_MassFlow;
78327761
delete[] ActDiskInlet_Temperature;
@@ -7934,30 +7863,15 @@ CConfig::~CConfig(void) {
79347863

79357864
delete[] Inlet_Temperature;
79367865
delete[] Inlet_Pressure;
7937-
delete[] Outlet_Pressure;
7938-
delete[] Isothermal_Temperature;
7939-
delete[] Heat_Flux;
79407866
delete[] HeatTransfer_Coeff;
79417867
delete[] HeatTransfer_WallTemp;
7942-
delete[] Displ_Value;
7943-
delete[] Load_Value;
7944-
delete[] Damper_Constant;
79457868
delete[] Load_Dir_Multiplier;
79467869
delete[] Load_Dir_Value;
79477870
delete[] Disp_Dir;
79487871
delete[] Disp_Dir_Multiplier;
79497872
delete[] Disp_Dir_Value;
79507873
delete[] Load_Sine_Amplitude;
79517874
delete[] Load_Sine_Frequency;
7952-
delete[] FlowLoad_Value;
7953-
delete[] Roughness_Height;
7954-
delete[] Wall_Emissivity;
7955-
7956-
if (Inlet_SpeciesVal != nullptr) {
7957-
for (auto i = 0u; i < nMarker_Inlet_Species; ++i)
7958-
delete[] Inlet_SpeciesVal[i];
7959-
}
7960-
delete[] Inlet_SpeciesVal;
79617875

79627876
/*--- related to periodic boundary conditions ---*/
79637877

@@ -7979,53 +7893,19 @@ CConfig::~CConfig(void) {
79797893
delete[] Periodic_Rotation;
79807894
delete[] Periodic_Translate;
79817895

7982-
delete[] MG_CorrecSmooth;
79837896
delete[] PlaneTag;
79847897
delete[] CFL;
7985-
delete[] CFL_AdaptParam;
79867898

79877899
/*--- String markers ---*/
79887900

7989-
delete[] Marker_Euler;
7990-
delete[] Marker_FarField;
7991-
delete[] Marker_Custom;
7992-
delete[] Marker_SymWall;
79937901
delete[] Marker_PerBound;
79947902
delete[] Marker_PerDonor;
7995-
delete[] Marker_NearFieldBound;
7996-
delete[] Marker_Deform_Mesh;
7997-
delete[] Marker_Deform_Mesh_Sym_Plane;
7998-
delete[] Marker_Fluid_Load;
7999-
delete[] Marker_Fluid_InterfaceBound;
80007903
delete[] Marker_Inlet;
80017904
delete[] Marker_Supersonic_Inlet;
8002-
delete[] Marker_Supersonic_Outlet;
8003-
delete[] Marker_Outlet;
8004-
delete[] Marker_Isothermal;
8005-
delete[] Marker_Smoluchowski_Maxwell;
8006-
delete[] Marker_EngineInflow;
80077905
delete[] Marker_EngineExhaust;
8008-
delete[] Marker_Displacement;
8009-
delete[] Marker_Load;
8010-
delete[] Marker_Damper;
80117906
delete[] Marker_Load_Dir;
80127907
delete[] Marker_Disp_Dir;
80137908
delete[] Marker_Load_Sine;
8014-
delete[] Marker_FlowLoad;
8015-
delete[] Marker_Internal;
8016-
delete[] Marker_HeatFlux;
8017-
delete[] Marker_Emissivity;
8018-
delete[] Marker_Inlet_Species;
8019-
8020-
delete [] Int_Coeffs;
8021-
8022-
delete [] ElasticityMod;
8023-
delete [] PoissonRatio;
8024-
delete [] MaterialDensity;
8025-
delete [] Electric_Constant;
8026-
delete [] Electric_Field_Mod;
8027-
delete [] RefNode_Displacement;
8028-
delete [] Electric_Field_Dir;
80297909

80307910
/*--- Delete some arrays needed just for initializing options. ---*/
80317911

@@ -8042,34 +7922,15 @@ CConfig::~CConfig(void) {
80427922
delete [] RelaxFactorAverage;
80437923
delete [] RelaxFactorFourier;
80447924
delete [] nSpan_iZones;
8045-
delete [] Kind_TurboMachinery;
80467925

8047-
delete [] Marker_MixingPlaneInterface;
80487926
delete [] Marker_TurboBoundIn;
80497927
delete [] Marker_TurboBoundOut;
80507928
delete [] Marker_Riemann;
80517929
delete [] Marker_Giles;
8052-
delete [] Marker_Shroud;
80537930

80547931
delete [] nBlades;
80557932
delete [] FreeStreamTurboNormal;
80567933

8057-
delete [] top_optim_kernels;
8058-
delete [] top_optim_kernel_params;
8059-
delete [] top_optim_filter_radius;
8060-
8061-
delete [] ScreenOutput;
8062-
delete [] HistoryOutput;
8063-
delete [] VolumeOutput;
8064-
delete [] Mesh_Box_Size;
8065-
delete [] VolumeOutputFiles;
8066-
8067-
delete [] ConvField;
8068-
8069-
delete [] Species_Clipping_Min;
8070-
delete [] Species_Clipping_Max;
8071-
delete [] Species_Init;
8072-
80737934
}
80747935

80757936
string CConfig::GetFilename(string filename, string ext, int timeIter) const {

0 commit comments

Comments
 (0)