【发布时间】:2011-04-27 11:08:02
【问题描述】:
我试图将一个小数组复制到一个更大的数组中,但我不知道如何让它工作(程序在 Visual Studio 2008 x32 上总是崩溃)
memcpy 为
工作 memcpy( raster+(89997000), abyRaster, sizeof(abyRaster));
但不是
memcpy( raster+(line*3000), abyRaster, sizeof(abyRaster));
我只是想让它在 for 循环中工作,但对指针算法以及 int 和 unsigned char 的大小感到困惑。
想法?
unsigned char raster[3000*3000];
unsigned char abyRaster[3000*1];
for( int line=0; line<3000;line++ ) {
int arrayPosition = line*3000;
memcpy( raster+(arrayPosition), abyRaster, sizeof(abyRaster));
}
【问题讨论】:
-
将 3000 替换为 300 或 30 会发生什么?
-
你的问题是堆栈不够大。在堆上分配
abyRaster。忠告:当您在 Stack Overflow 上发布问题时,请提供错误消息。说“程序总是崩溃”不是很有帮助。包含错误消息会对您的问题的质量产生很大影响。