Re: Better way of assigning memory
On May 18, 3:01 am, Amit_Basnak <Amit.Bas...@gmail.com> wrote:
Dear Friend which one is the better way of assigning memory and
releasing it
//WF_STRUCT_WORKUNIT is a Structure
WF_STRUCT_WORKUNIT *p_str_Workunit = (WF_STRUCT_WORKUNIT *) new char
[ sizeof(WF_STRUCT_WORKUNIT) ];
if (p_str_Workunit!)
{
TError error( TError ( CString( __FILE__ )
,__LINE__
,TRM_NO_MEMORY
,0
,CString("") ));
throw new tException(error);
}
conObj.CopyToDceWF_STRUCT_WORKUNIT(p_str_Workunit,pStrWorkUnit); //
function call
OR
WF_STRUCT_WORKUNIT *p_str_Workunit = (WF_STRUCT_WORKUNIT
*)malloc(sizeof(WF_STRUCT_WORKUNIT));
memset(p_str_Workunit,'\0',sizeof(WF_STRUCT_WORKUNIT));
conObj.CopyToDceWF_STRUCT_WORKUNIT(p_str_Workunit,pStrWorkUnit); //
function call
Thanks
Amit
A name for a struct like WF_STRUCT_WORKUNIT is silly and all uppercase
should be reserved for constants. Try something like:
struct WorkUnit { ... };
Replace all of the above code by providing an appropriate default
ctor, copy ctor and op== for class/struct WorkUnit.
And do as follows:
#include <vector>
int main()
{
std::vector< WorkUnit > v(100); // done, 100 WorkUnits
}
Just in case you fail to see the light:
#include <vector>
#include <string>
int main()
{
// 1000 doubles all initilixed to 1.1
std::vector< double > vd(1000, 1.1);
// 100 strings all initialized to 'default'
std::vector< string > vs(100, "default");
}