gpt4 book ai didi

c - 如何在不破坏严格别名的情况下通过缓冲区传递此指针?

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:03 25 4
gpt4 key购买 nike

<分区>

我对严格别名的理解是我们不能(除了像 char* 这样的少数异常(exception))使用两种不同类型的指针来访问/取消引用同一内存区域。我有一个 char 缓冲区和一个指向 struct Foo 的指针,我想将这个指针“保存”到缓冲区中,这样我就可以在其他地方检索指针并使用它。像这样:

Foo* f =//pointer to some real Foo object
char buf[N];
memcpy(buf, &f, sizeof(Foo*));

然后:

Foo* f2 = *(Foo**) &buf;
f2->bla;

这打破了下面指出的别名,因为 buf 是一个字符数组,我们将其视为 Foo** 并取消引用它。有没有办法让我的 Foo 对象只通过 buf 指针通过,或者我是否必须将所有 Foo 复制到缓冲区中?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com