memcpy被卡住了

昨天遇到了一件令人很疑惑的情况。我为系统封装新的CameraLink采集卡SDK,如往常一样,调用Grab()开始采集,然后FrameReceived()被SDK回调,我在里面使用了memcpy()复制图像数据供程序使用。接下来,问题就发生在我调用SDK提供的函数修改了采集图像的大小之后,这时,我再次调用Gtab(),FrameReceived()被回调,但它卡住了,在memcpy()这里卡住了,像是进入了一个循环。当然最后问题是解决了--修改图像后还需要调用一个接口来重新初始化SDK的buffer

memcpy()被卡住的原因分析:

Can memcpy go into an infinite loop? Why is it being blamed for a busy hang? by Raymond Chen

里面虽然没有给出一个确切的原因,但已经将问题定位到是调用memcpy()这个方法的相关进程进入了一个循环--回到我的问题的话,那就是SDK有线程进入了一个(死)循环

 

参考:

[1] Raymond Chen; Can memcpy go into an infinite loop? Why is it being blamed for a busy hang?  devblogs.microsoft.com 2017

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
memcpy函数不会卡住。它是一个用于内存复制的函数,可以在C/C++语言中使用。它的原型是void *memcpy(void *destin, void *source, unsigned n)。该函数会将source指针指向的内存区域的数据复制到destin指针指向的内存区域中,复制的数据长度为n个字节。\[1\] 如果在使用memcpy函数时出现卡住的情况,可能是由于以下原因: 1. 参数传递错误:确保传递给memcpy函数的参数是正确的,包括目标地址、源地址和复制的字节数。 2. 内存访问错误:确保目标地址和源地址指向的内存区域是有效的,并且有足够的空间进行复制操作。 3. 地址重叠:如果目标地址和源地址存在重叠,需要根据具体情况选择正确的复制方式。可以使用高地址向低地址的方式进行复制,以避免数据被覆盖。\[2\] 如果以上情况都没有问题,那么可能是其他代码逻辑或环境问题导致的卡住。在这种情况下,建议检查其他相关代码,查找可能的问题所在。 #### 引用[.reference_title] - *1* *3* [memcpy 函数](https://blog.csdn.net/GoodLinGL/article/details/114602721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [C语言之memcpy函数](https://blog.csdn.net/frank_jb/article/details/51698948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值