http://d.hatena.ne.jp/w_o/20140827#1409138046

聞かれたので書いておくと、

#include <stdio.h>

int func(int *p,
         unsigned int i)
{
    int *p2;

    p2 = &p[i]-1;
    printf("A:%d\n", *p2);

    p2 = &p[i-1];
    printf("B:%d\n", *p2);
}

int data[] = {1,2,3};

int main()
{
    func(data+1, 0);
}

i が unsigned int かつ、ポインタが64bitかつint が32bit だと、 i=0; i-1 は 4294967295 になるので、p[4294967295]にアクセスするという問題でした。
わからなかった人は明日からC/C++使うのをやめてasm書きましょう。