>> Can I assume that this won't throw an exception if arr=NULL?
Yes, that is a safe assumption.

By the way, it is doubtful that proper use of a vector will be slower than the dynamic array. Plus, you will get the added advantages of not having to worry about the destructor, copy constructor and copy assignment operator. I'd encourage you to consider using it as long as you are working on that class. As mentioned, it can even be passed as a C style array to legacy code (use &vec[0] where vec is the vector that isn't empty).