Jag är övertygad om att hade du definierat storleken på 'data[]' till t.ex. 20 hade det fungerat utmärkt. Du har ingen koll på vad C använder av "egna" variabler och var de läggs och du kan ytterst lätt risikerar att de läggs strax efter dina variabler.
Vid att inte ange storlek säger du att storleken är 0, att kompilern inte skäller för det är konstigt men det är väl ett fel av någon sorts.