Soviel ich weis hängt die maximale URL-Länge vom Browser ab.
Wenn ich mich richtig erinnere können alle Browser (außer Internet Explorer natürlich der kann glaub ~2000 Character) rund 60 000 Character in der URL haben.
Bin mir aber nicht 100% sicher
Ein Pointer muss immer auf etwas "zeigen". Sprich momentan zeigt dein Pointer auf keine Adresse im Speicher (NULL). Weshalb du wahrscheinlich eine NullPointerException bekommst.
char* dataDirectory = new char[MAX_PATH];
Ansonsten würde ich mir mal an deiner stelle std::string bzw std::wstring anschauen.