首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从指针填充结构是否会使对该结构的访问在释放后未定义?

从指针填充结构是否会使对该结构的访问在释放后未定义?
EN

Stack Overflow用户
提问于 2020-07-30 06:20:46
回答 1查看 11关注 0票数 0

假设我们有以下情况:

代码语言:javascript
复制
#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地址上的值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 06:24:26

在C中,如果你不使用指针,那么总是会生成一个副本。因此,当ptest被释放时,jtest仍然拥有它自己的内存副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63163297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档