我有一个关于优化的练习。我需要优化一个旋转 45 度的程序。我知道使用指针访问数组更有效,所以我尝试了下面的更改 - 原始代码:
RGB* nrgb = (RGB *)malloc(imgSizeXY*3);//3=sizeof(RGB)
//...
for (i=imgSizeY-1; i>=0; --i)
{
for (j=imgSizeX-1; j>=0; --j)
{
//...
int y=(i*imgSizeX+j);
nrgb[y].r = *imgInd; //*imgInd computed earlier
变化:
RGB* nrgb = (RGB *)malloc(imgSizeXY*3);//3=sizeof(RGB)
RGB* rgbInd = nrgb+imgSizeXY-1;
for (i=imgSizeY-1; i>=0; --i)
{
for (j=imgSizeX-1; j>=0; --j)
{
rgbInd->r=*imgInd;
--rgbInd;
但是当使用指针时,程序会产生错误的输出。我已经盯着它看了好几个小时,仍然不知道为什么。有任何想法吗?非常感谢!