You shouldn't be using GlobalAlloc/GlobalFree without good reason. All the WIN32 functions that give you memory allocated with GlobalAlloc are like that because they're being backward compatible with WIN16, which had a different memory model.
@m4ster r0shi: Let's say I was crazy and DIDN'T want to use string in ANY way ok? what would fix this?
@kbw: what would you recommend that assigns blocks of memory to pointers?