c++ - Character array reuse -


i'm writing win32 console application in visual studio 2010.

consider 1 function take 2 char* parameters.

following prototype of function:

void writeapplicationfile(char *mappname,char* messagestring) {    //do file related stuffs. } 

now following calls working perfectly:

writeapplicationfile("firstone", "append me"); writeapplicationfile("firstone", "append another"); 

but if try same thing character array thing give me assertion, , throw me on assembly.

the following code not working:

char * localbuffer  = new char[100];  sprintf(localbuffer,"number of jobs in queue %d",jobscount); writeapplicationfile("saazshadowprotect",localbuffer); free(localbuffer); localbuffer = null; //work fine. //... localbuffer  = new char[100];  sprintf(localbuffer,"log file name %s",logfilecharname); writeapplicationfile("saazshadowprotect",localbuffer); free(localbuffer);   // got assertion here.. localbuffer = null; 

where going wrong?

one more thing want handle assertion , bugs try-catch block. how this?

if use new[] must use delete[], not free() or delete. replace:

free(localbuffer); 

with:

delete[] localbuffer; 

there appears no reason dynamically allocating memory. size of buffer compile time constant, not large (no stack overflow) , buffer appears not required live beyond scope in allocated.

as c++ suggest using std::string handle dynamic memory management , std::ostringstream typesafe , avoids specification of fixed sized buffers instead of sprintf():

#include <sstream> #include <string>  std::ostringstream out; out << "number of jobs in queue " << jobscount; const std::string s(out.str()); 

if access c-style string required use std::string::c_str().

additionally, argument types of writeapplicationfile() char*, not const char*, passing string literal function causing undefined behaviour if function modifies arguments.


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -