假设我们有以下情况:
#include <stdio.h>
#include <stdlib.h>
struct test {
int a;
int b;
};
int main()
{
struct test *ptest = malloc(sizeof(struct test));
struct test jtest;
ptest->a = 3;
ptest->b = 2;
jtest = *ptest;
free(ptest);
printf("a: %d\nb: %d\n", jtest.a, jtest.b);
return 0;
}由于我已经释放了指向ptest的指针,并因此释放了它所引用的内存区,因此在释放ptest之后,我对jtest的访问受到了威胁。或者,当进行取消引用以分配jtest的值时,它会复制ptest地址上的值
发布于 2020-07-30 06:24:26
在C中,如果你不使用指针,那么总是会生成一个副本。因此,当ptest被释放时,jtest仍然拥有它自己的内存副本。
https://stackoverflow.com/questions/63163297
复制相似问题