配列のすべての内容を逆方向にコピーしないように、配列のポインターを調整しています。問題は、ある時点でデータを解放したいということです。ポインタを元のアドレスに戻さない限り、セグメンテーション違反が発生します。これを回避する方法はありますか?シフトが関数内で実行される場合、呼び出し元の関数はシフトの大きさを認識しない可能性があるためです。
例:
int i;
float * y = malloc(10*sizeof(float));
for(i=0;i<10;i++) y[i] = (float)i;
y += 2;
for(i=0;i<8;i++) printf("%d\n",y[i]);
free(y); // this will generate a segmentation fault
y -= 2; free(y); // this is OK, but I would like to avoid it
ここに期待しすぎですか?