【发布时间】:2018-12-23 11:30:57
【问题描述】:
我在处理这段代码时遇到了问题。尝试使用此方法垂直翻转 24 位未压缩 bmp 文件,但出现分段错误。我已经检查了逻辑,这似乎是正确的。我有什么问题?
int verticalflip (PIXEL *original, PIXEL **new, int rows, int cols) {
int row, col;
if ((rows <= 0) || (cols <= 0)) return -1;
*new = (PIXEL*)malloc(rows*cols*sizeof(PIXEL));
for (row=0; row < rows; row++)
for (col=0; col < cols; col++) {
PIXEL* o = original + row*cols + col;
PIXEL* n = (*new) + (rows-1-row)*cols + col;
*n = *o;
}
return 0;
}
【问题讨论】:
-
你在函数调用中作为
new传递了什么? -
应该是这样的:
PIXEL* flipped; verticalflip(..., &flipped, ...); -
将 PIXEL *bitmap、*newBitmap 分别传递给 original 和 new。我有另一种水平翻转的方法,它本质上是相同的,但当然逻辑不同,而且效果很好。我认为问题可能不在于函数的逻辑,而在于其他地方。我正在检查我的整个代码。
-
你的意思是PIXEL **newBitmap?
-
我的函数调用:verticalflip(bmp, &newBmp, rows, columns);
标签: c bitmap variable-assignment flip