关于memcpy 在循环里只写入一部分数据的问题

在使用 memcpy API 进行数据复制时,遇到一个bug:循环中只写入了第一行数据,其他行未写入。经过排查发现,问题出在将指针数据写入文件时,分配的内存大小小于实际需要,从而导致memcpy无法正确复制所有数据。解决方法是确保内存分配足够大,以容纳所有要复制的数据。如果程序运行时出现内存相关警告,可能是指针问题,如释放后的指针使用或越界访问。
摘要由CSDN通过智能技术生成

在写小功能的时候,使用memcpy API的时候,出现了在循环中,只写入了第一行的数据 其他都没有写入
的BUG。如:
在这里插入图片描述
循环里 没有写入,但像注释掉的那样学就能写入。这是为什么呢

一开始,以为是对 memcpy 用法理解错误。就去查了下,API说明。

void *memcpy(void *str1, const void *str2, size_t n)

第一个参数是 需要传的是一个指针。没错呀。这让我一筹莫展。

往往 啥都没问题的 时候 错误可能就出现在 最简单的地方。直到我想到了要写入的文件
在这里插入图片描述
没错,我这个将指针数据写入文件的大小申请的 比指针大小小。导致了memcpy学不进去。。

提一句 如果运行程序时 出现以下提示
在这里插入图片描述
很大几率是指针的问题,可能是 free 已经 偏移的指针,也可能是越界了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值