can these code fragments lead to a memory leak
-
I used Visual Memory Leak in my code and it has reported memory leak from files having this code. Can anyone give information as to whether these codes can lead to memory leak or not ************************************ case 1 ************************************ sub_code = (char *) calloc(5,sizeof(char)); if(f_decimal_value !=0 ) { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } else { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } ********************************************* case 2 ********************************************** sub_code = (char *)calloc(3,sizeof(char)); char2str(2,sub_code) if(strcmp(sub_code,"00") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"01") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"10") == 0) { free(sub_code); //additional code here } else if (strcmp(sub_code,"11") == 0) { free(sub_code); //additional code here }
-
I used Visual Memory Leak in my code and it has reported memory leak from files having this code. Can anyone give information as to whether these codes can lead to memory leak or not ************************************ case 1 ************************************ sub_code = (char *) calloc(5,sizeof(char)); if(f_decimal_value !=0 ) { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } else { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } ********************************************* case 2 ********************************************** sub_code = (char *)calloc(3,sizeof(char)); char2str(2,sub_code) if(strcmp(sub_code,"00") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"01") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"10") == 0) { free(sub_code); //additional code here } else if (strcmp(sub_code,"11") == 0) { free(sub_code); //additional code here }
The bits you leave out are the bits we need to see! For example, in the first example the code that's missing and commented with "//additional code here" could cause a leak if: - It returns. - It stomps on the pointer value in
sub_code
without seeing that it's freed. - It throws an exception.Steve
-
I used Visual Memory Leak in my code and it has reported memory leak from files having this code. Can anyone give information as to whether these codes can lead to memory leak or not ************************************ case 1 ************************************ sub_code = (char *) calloc(5,sizeof(char)); if(f_decimal_value !=0 ) { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } else { free(sub_code); sub_code = (char *) calloc(3,sizeof(char)); //additional code here free(sub_code); } ********************************************* case 2 ********************************************** sub_code = (char *)calloc(3,sizeof(char)); char2str(2,sub_code) if(strcmp(sub_code,"00") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"01") == 0) { free(sub_code); //additional code here } else if(strcmp(sub_code,"10") == 0) { free(sub_code); //additional code here } else if (strcmp(sub_code,"11") == 0) { free(sub_code); //additional code here }