Accesezi elementul de la poziția i - k, fără să verifici că i - k este nenegativ, deci accesează memorie înafara vectorului V.
Îți merge dacă mai declari și vectorul D, fiindcă va folosi memoria respectivă. V[-100] (să zicem) va fi de fapt în memoria alocată pentru D. În orice caz, ăsta e comportament nedefinit în standardul limbajului, nu poți să te
bazezi niciodată că lucrurile se vor petrece așa. Citește și răspunsurile de aici:
http://stackoverflow.com/questions/671703/array-index-out-of-bound-in-c.