c - 是否是 memcpy 所期望的

标签 c memcpy

我这里有一个情况,我有三个 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/

相关文章:

c++ - 检测到缓冲区溢出

C: error C2105: '++' 需要左值

c - 错误 : request for member in something not a structure or union

c - 如何使用自定义函数 split() 将句子拆分为单个单词?

C++:使用 memcpy 时,myArray 和 &myArray 有什么区别?

在函数中复制结构体并在c中返回副本

c++ - 以下场景如何复制?

c - fprintf 不能在 wireshark 源中工作

c++ - 如何将 char 数组作为对函数和 memcpy 的引用传递

c++ - 将 vector <bool> 转换为 int