我正在尝试向某人解释为什么他们有一个悬空指针以及free函数的实际作用(指针是值,因此按值传递),但为此我认为需要一种打印指针的方法,而不是“不确定”的(如printf("%p", ptr)
)。
memcpy能行吗?
char buf1[sizeof(char *)];
char buf2[sizeof(char *)];
char *malloced = malloc(10);
memcpy(buf1, &malloced, sizeof(char *));
free(malloced);
memcpy(buf2, &malloced, sizeof(char *));
for (int i=0; i<sizeof(char *); i++) {
printf("%hhd %hhd / ", buf1[i], buf2[i]);
}
free
被定义为void free(void *ptr)
而不是void free(void **ptr_to_ptr)
。据我所知,它实际上不能改变指针。 - SoniEx2memcpy
复制比特位模式,但接下来呢?如果你查看比特模式,它并不能告诉你值是否发生了变化。你能知道比特模式是否改变了,但你已经知道它不会改变。 - David Schwartz