C++函数内修改传入的数组参数的问题排查
错误原因
- 类型不匹配:
*out_buffer是unsigned int类型的变量,而&updatedValues是数组指针,二者类型完全不兼容,赋值本身就是语法错误。 - 局部变量生命周期错误:
updatedValues是函数内的栈区局部数组,函数执行完成后这块内存会被自动回收,就算成功把地址赋值出去,后续访问也属于非法野指针访问。 - 逻辑错误:你的需求是将
updatedValues内的元素值复制到out_buffer指向的myArray内存空间中,而不是修改指针指向或者给单个元素赋值地址。
仅修改最后一行的修复方案
你需要使用内存拷贝函数把局部数组的内容复制到目标数组空间,注意需要提前引入<string.h>头文件,最后一行替换为如下代码即可:
memcpy(out_buffer, updatedValues, sizeof(updatedValues));
该函数会把updatedValues数组中全部5个unsigned int类型的元素值,完整拷贝到out_buffer指向的myArray内存地址,执行完成后myArray的元素就会被更新为1、2、3、4、5。
内容的提问来源于stack exchange,提问作者Jano Rajmond
相关产品推荐
相关产品推荐

