我有一个用例,我可以获得在内存或文字中分配的字符串指针.现在后者不能被释放,所以如果我通过错误的话就会出问题.有没有办法知道哪一个被分配哪个不分配?
char *b = "dont free me!";
if(!IS_LITERAL(b)) {
free(b);
}
Run Code Online (Sandbox Code Playgroud)
我想象那样的事情.
我的例子:
场景1:字面意思
char *b = "dont free me!";
scruct elem* my_element = mylib_create_element(b);
// do smth
int result = mylib_destroy_element(my_element); // free literal, very bad
Run Code Online (Sandbox Code Playgroud)
场景2:在堆中
char *b = malloc(sizeof(char)*17); // example
strncpy(b, "you can free me!",17);
scruct elem* my_element = mylib_create_element(b);
// do smth
int result = mylib_destroy_element(my_element); // free heap, nice
Run Code Online (Sandbox Code Playgroud)
用户如何调用mylib_create_element(b);不受我的控制.如果他在mylib_destroy_element崩溃之前释放.所以它必须mylib_destroy_element清理干净.
c ×1