...
Code Block | ||||
---|---|---|---|---|
| ||||
#include <string.h> #define __STDC_WANT_LIB_EXT1__ 1 #include <stdlib.h> errno_t f(voidconst char *input_str) { size_t size = strlen(input_str)+1; char *c_str = (char *)malloc(size); memcpy(c_str, input_str, size); /* ... */ free(c_str); c_str = NULL; /* ... */ return 0; } |
Compliant Solution (POSIX)
...
Code Block | ||||
---|---|---|---|---|
| ||||
#include <string.h> #define __STDC_WANT_LIB_EXT1__ 1 #include <stdlib.h> #include <errno.h> errno_t f(voidconst char *input_str) { size_t size = strlen(input_str)+1; char *c_str = (char *)malloc(size); if (NULL == c_str) { return ENOMEM; /* Indicate allocation failure */ } memcpy(c_str, input_str, size); /* ... */ free(c_str); c_str = NULL; /* ... */ return 0; } |
This compliant solution is categorized as a POSIX solution because it returns ENOMEM
, which is defined by POSIX but not by the C Standard.
...