Ad
Code
Diff
  • #include <stdlib.h>
    #include <string.h>
    
    char *my_strdup_1(const char *str) {
      const size_t len = strlen(str) + 1;
      char * const res = malloc(len);
      if (!res)
        return (NULL);
      memcpy(res, str, len);
      return res;
    }
    
    char *my_strdup_2(const char *str) {
      const size_t len = strlen(str) + 1;
      char * const res = malloc(len);
      if (!res)
        return (NULL);
      memcpy(res, str, len);
      return res;
    }
    
    • #include <stdlib.h>
    • #include <string.h>
    • char *my_strdup_1(const char *str) {
    • const size_t len = strlen(str);
    • char *const res = malloc(len); // <- BUG
    • const size_t len = strlen(str) + 1;
    • char * const res = malloc(len);
    • if (!res)
    • return (NULL);
    • memcpy(res, str, len);
    • return res;
    • }
    • char *my_strdup_2(const char *str) {
    • const size_t len = strlen(str);
    • char *const res = malloc(len); // <- BUG
    • memcpy(res, str, len + 1);
    • const size_t len = strlen(str) + 1;
    • char * const res = malloc(len);
    • if (!res)
    • return (NULL);
    • memcpy(res, str, len);
    • return res;
    • }