堆栈溢出使用memcpy将1d阵列复制到2d阵列时出错

时间:2013-10-18 06:55:51

标签: arrays mfc stack-overflow memcpy

在我的MFC项目的一个按钮单击功能中,我得到以下代码,试图将数据数组复制到另一个数组:

Char dest[2500][50];
double totalNum = CountNum*2;
for (int n=0; n< totalNum; n++){
    memcpy(dest[n], readingdata+n*14, 13);
    dest[n][13]=0;
} 

如果我运行此代码一次或两次,则没有错。但是当我尝试多次运行此代码时,程序会给我一个异常错误:Stack Overflow。错误发生在chkstk.asm文件中,它位于第99行:

test dword ptr [eax],eax ; probe page

任何人都可以帮助我并解释这是如何导致堆栈溢出问题的吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

尝试使用动态数组

double totalNum = CountNum*2;    
ViChar (*dest)[50] = new ViChar[totalNum][50];
for (int n=0; n< totalNum; n++){
    memcpy(dest[n], readingdata+n*14, 13);
    dest[n][13]=0;
}

delete [] dest;