I recently started learning DirectX/Windows, and the book I’m learning from had the code
d3d = Direct3DCreate9(D3D_SDK_VERSION);
if(d3d == NULL)
//catch error &c.
My question is: What would cause an error in this line, that is different than what would cause an error in another line (say, for example, int num = 42)?
This is an error or not according to the meaning you give to the return value of Direct3DCreate9, i.e. depending on the specification of the function. I’ve written many pointer-returning functions for which NULL as a return value was not an erroneous situation.
So, do not equate “a function returning NULL” to “an error”. An unambiguous error is a crash (technically, undefined behaviour) in your code, like if d3d is indeed NULL and later you dereference it.
Here you are declaring an int variable called num and initializing it with a value of 42. What kind of error can you think of? Obviously, num will never “be NULL”, if that bothers you. 42 may be a correct value or an error, depending on the context.