c - 为什么在特定情况下需要 memcpy
问题描述
在以下函数中:
void cp (char **x, char ** y) {
while (*x) {
* y = malloc(strlen (*x)+1);
// * y++ = *x++;
memcpy (*y++, *x++, strlen (*x) + 1);
}
}
为什么我需要使用memcpy
?为什么我不能只使用* y++ = * x++
. 当我尝试这样做时,在尝试释放该内存时会出现段错误。
解决方案
x
并且y
是char**
s。如果你只是这样做* y++ = * x++
,那么你就是让中间指针指向同一个地方,而不是实际将数据从第一个位置复制到第二个位置。
推荐阅读
- python - 在 python 中进行拼写检查的时间太多
- delphi - PostgreSQL 的 FireDAC 异常 EFDDBEngineException 错误代码映射是否有任何变化?
- c# - 如果 MSBuild 工具为时过早,如何让 MSBuild .proj 失败
- c++ - 使用 ICP 算法查找两个点云之间的平移
- angular - 如何在 angular-google-charts 中缩放谷歌折线图?
- javascript - 在 Google 我的地图 iframe 上禁用鼠标滚轮滚动
- r - R:使用 terminalExecute() 时出现“调用 capture_console_output 时出错:87”
- java - Centos java定制服务
- entity-framework - 实体框架:映射多对多
- mysql - 具有唯一子集的 MySQL 复合索引