1. Don't include in archive data that could be regenerated. I mean local solution data, precompiled header, compiled objects. Other programmers do not need them. Real size of your project is just several kilobytes. And RAR is a good archiver, but Linux guys don't have it. =)
2. If you want to share your code - use special services for it. Bitbucket or Google.Code, for example.
3. Precompiled header is not used in your code. So turn it off.
4. Always check an index of array that your function receives. In critical places use assert macro:
assert(index < imageList.size());
It will check expression in Debug build and skip check in Release.
That's all! =)