gpt4 book ai didi

c - 使用 memcpy 将结构复制到堆中

转载 作者:行者123 更新时间:2023-12-02 06:08:51 25 4
gpt4 key购买 nike

我正在尝试使用以下代码将名为“Holder”的结构放入堆中,但是当我尝试使用 memcpy 时出现段错误:

Holder hold;
Holder *heapHold = memcpy(heapHold, &hold, sizeof(Holder));

为什么我会出现段错误?

最佳答案

Holder hold;

这声明 hold作为 Holder 类型的变量. hold未初始化。
Holder *heapHold = memcpy(heapHold, &hold, sizeof(Holder));
memcpy(dest, source, size)副本 size来自 source 的字节至 dest .它假设 dest分配得当。由于您没有为它分配内存,因此您会遇到段错误。

您需要分配内存:
Holder *heapHold = malloc(sizeof *heapHold);
if (heapHold == NULL) {
/* failed to allocate, handle error here */
} else {
/* OK to copy. Make sure you initialize 'hold' to something valid */
memcpy(heapHold, &hold, sizeof *heapHold);
}

另外, memcpy()返回第一个参数。将返回值分配给 heapHold就像说 a = a; ,即它什么都不做。对于大多数实际情况, memcpy() 的返回值被忽略。

关于c - 使用 memcpy 将结构复制到堆中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751960/

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