Dear All,
There is a part of a C code, that gives me ,apparently, a memory leak.
I cannot find the exact place, and make sure if anything is wrong.
I just wanted to see if anybody can help on this:
Here is where the potential problem maybe:
Code:
void* my_function(void* ptr){
//this is taking a string, and parses its portions to separate argv, argc to pass to my_main()
MyStructure *main_input;
char *input_command_line = (char *)ptr;
main_input = (MyStructure *)malloc(sizeof(MyStructure));
main_input->argv = (char **)malloc(sizeof(char *));
parse_command_line(input_command_line, main_input);
my_main(main_input->argc,main_input->argv);
free(input_command_line);
free(main_input);
return;
}
Where MyStructure is defined like this:
Code:
typedef struct MyStructure{
int argc;
char** argv;
} MyStructure;
and the functions my_main(), and parse_command_line() are defined in the same c file like this:
Code:
void parse_command_line(char *command_line, MyStructure *return_value){
return_value->argc = 0;
return_value->argv[return_value->argc]=(char *)malloc(sizeof(char)*64);
return_value->argv[return_value->argc] = strtok (command_line," ");
while(return_value->argv[return_value->argc] != NULL){
(return_value->argc)++;
return_value->argv[return_value->argc]=(char *)malloc(sizeof(char)*64);
return_value->argv[return_value->argc] = strtok (NULL," ");
}
return;
}
and:
Code:
int my_main(int argc, char **argv){
/*Some stuff.....Nothing wrong here for sure*/
return 0;
}