c++ - ::memset 在初始化大型数组时崩溃
问题描述
我正在编写一个旨在处理大量数据的 C++ 程序。我正在测试一个特定的函数HVE_KeyGen()
,它接收一个大数组以及其他参数。我写了一个函数TestFunction()
来测试HVE_KeyGen()
. 现在,这个函数是空的,只有return 0
语句。该程序正在编译,没有任何错误。但是,当我执行 TestFunction 时,程序崩溃(SIGSEGV 错误)。在调试时,我注意到这::memset(v_vec,0xF0,262144);
是导致崩溃的原因。如果我将此行更改为::memset(v_vec,0x00,262144);
,程序不会崩溃。虽然我可以使用 for 循环将内容初始化为 0xF0,但我仍然更喜欢使用memset
. 知道为什么会发生这种情况以及如何解决吗?提前致谢。
int TestFunction(){
uint8_t v_vec[262144];
uint8_t hve_d0[16];
uint8_t hve_d1[16];
uint8_t hve_S[262144];
uint8_t x_vec[262144];
uint8_t hve_c_vec[4194304];
::memset(v_vec,0xF0,262144);//This causes crash
::memset(hve_d0,0x00,16);
::memset(hve_d1,0x00,16);
::memset(hve_S,0x00,262144);
::memset(x_vec,0x00,262144);
::memset(hve_c_vec,0x00,4194304);
for(int i=0;i<262144;i++){
v_vec[i] = 0xF0;
}
//msk is a global variable; hve_d0, hve_d1, and hve_S store output data
HVE_KeyGen(hvemsk, v_vec, hve_d0, hve_d1, hve_S);
return 0;
}
解决方案
推荐阅读
- css - 页面上的中心 div - 忽略父 div(手风琴)
- python - 链接两个模型
- android - 设置窗口标志“LayoutNoLimits”时,Android软键盘不滚动并覆盖EditText
- javascript - 我可以在 CDN 上托管 html5shiv 和 respond.js 吗?
- assembly - x86 CPU 可以在用户模式下读取任何寄存器的值吗?
- javascript - 使用样式组件和样式系统添加条件样式的最佳方法是什么?
- maven - 如何为企业/项目/应用程序执行基于硒的测试/脚本?
- java - 简单 GET/POST 的“WebTarget”与“HttpClient.newHttpClient”
- c++ - C++:使用反射来循环结构中的元素?
- c++ - C ++,映射插入&&文件流读取导致麻烦