gpt4 book ai didi

c - 是否是 memcpy 所期望的

转载 作者:行者123 更新时间:2023-11-30 20:15:20 24 4
gpt4 key购买 nike

我这里有一个情况,我有三个 api 一起工作来打印一个长字符串(512 个字符)。我的第一个api用于分配512字节的内存,返回的地址是2000,之后第二个api将打印字符串,它在中间使用memcpy操作,但是现在当我从这个api返回时,第一个api中分配的 block 的地址已经改变从 2000 年到 2012 年,第 3 个 API 将使用地址 2012 释放分配的 block 。

这是预期的行为还是第三个 API 需要地址 2000 才能正确释放内存块?

最佳答案

不,这听起来好像出了什么问题。

如果没有看到您的代码,很难更具体。

听起来你的代码是这样做的:

void print_something(void)
{
char *s = allocate_string();
print_string(s);
free_string(s);
}

那么函数中s的值应该永远不会改变;其他函数只能按值获取s,因此它们无法合法地更改它。当然,内存覆盖可以做任何事情。

关于c - 是否是 memcpy 所期望的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219376/

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