Also does it matter that this class is created in a worker thread of a CDoculent?
Sure ! If you want to see if the class is causing a leak, drop it
into a console, or some similar simple app, and see if it leaks
there. I'll bet this one doesn't ( I checked ). Just because the
output window shows a leak that doesn't mean theres a leak -
just that at that time there seems to be.

And why pass in the len to AddString() - can't AddString() figure
that out itself leaving the caller to do less work ?