Better way of assigning memory

A

Amit_Basnak

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
 
S

Salt_Peter

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");
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,434
Messages
2,571,690
Members
48,796
Latest member
Greg L.

Latest Threads

Top