Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. can these code fragments lead to a memory leak

can these code fragments lead to a memory leak

Scheduled Pinned Locked Moved C / C++ / MFC
performance
3 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    jossion
    wrote on last edited by
    #1

    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 }

    S S 2 Replies Last reply
    0
    • J jossion

      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 }

      S Offline
      S Offline
      Stephen Hewitt
      wrote on last edited by
      #2

      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

      1 Reply Last reply
      0
      • J jossion

        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 }

        S Offline
        S Offline
        StevenWh
        wrote on last edited by
        #3

        Case 2 could lead to a leak because your "else if" chain has no final else clause. If none of the conditions apply, sub_code will never be freed. You could just add at the end else free(sub_code); and that would take care of it.

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • World
        • Users
        • Groups