I have many export functions in a DLL that output pointers, and they allocate memory in those functions. For example:
DLL_EXPORT void some_function(const char*** param)
{
*param= new const char*[somenumber];
//someting
//in some for-cycle
char* somestr = new char[somenumber1];
strcpy(somestr , somelocalstr);
//someting
}
it's used in other projects like this (I won't write LoadLibrary(), GetProcAddress() here, it's already done):
void some_function_that_uses_dll()
{
const char** param;
some_function(¶m);
//something
//some for-cycle
const char* somestring = param[i];
//something
non_local_std_string = somestring;
}
It's how I received the project.
It seems that obvious memory leaks are happening here. But when I tried to write delete[] somestring; after the non_local_std_string = somestring;, I've got a crash. Probably because it is different projects.
Is there a way to free those memory that have been allocated in the DLL, after it would have been copied into the std::string (non_local_std_string)? Or, does std::string move those memory?
Aucun commentaire:
Enregistrer un commentaire