有没有办法找出指针是否指向以下位置:
此外,这可以移植(Linux 64/32位,OSX和Windows 7+)吗?
跟进:
我不是想弄清楚是不是有些东西已被malloc.
我想有效地将void*指针与程序中的函数区分开来,从void*指针到堆栈或堆上的数据.
这适用于用C编写的语言运行库,而不是"普通"C程序.
到目前为止,这个答案是最有用的:检查某些东西是否已被malloced
如果我说:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *x;
char *y;
int main() {
x = malloc(sizeof("Hello, world!"));
strcpy(x, "Hello world!");
y = "Hello, world";
free(x);
fprintf(stderr, "okay");
free(y);
}
Run Code Online (Sandbox Code Playgroud)
然后,显然,程序将打印"okay",然后死亡,因为"指针被释放未被分配" - 显然,因为字符串是一个字符串文字.
我想编写一个在给定字符串文字时不执行任何操作的函数,但在给定非字符串文字时调用free.这有可能,如果是的话,怎么样?