0x00000000 almost always indicates a NULL pointer (in my experience anyway). I see you are using "i" as an index reference, so what is most likley happening is that you are somehow going out of bounds of the array, or you are accessing a texture member of the array that was not initialized. Personally (and I'm not sure if openGL has this) I would use whatever debugging tool you have to try and find which render target is not being initialized. One way you can do this is by outputting the address to the console by calling:
cout\<\<&fb.fbobj (or perhaps just fb.fbobj)
or to a file by using:
Using the console is the easier option, but I know that in C++ if you don't already have it open, getting it to while running a windowed app is a pain in the ass.
Good luck and don't hesitate to ask if you need more details.
EDIT: btw, just so you're not confused, the console is not usually open by default in openGL or directX examples, so in that case cout won't do anything. I would suggest looking around google for how to open the command console in C++. The code looks like a nightmare, but its suprisingly straight forward, and well worth the effort to be able to output any information you want to help you debug (or anything else you please).
EDIT AGAIN: oh wait... slightly misread your code. I'll make corrections to my suggestions later. I this I may see the problem.
ANOTHER EDIT: oh! haha I'm not sure, but try replacing the "++i" with "i++"