#include <iostream>
#include <cstring>

using namespace std;

struct mynode{
//some data
mynode *left , *right;
mynode(): left(NULL), right(NULL) {};				// Method 1
};

int main(int argc, char* argv[])
{
	int n = 5;
	int m = 10;
	mynode** p = new mynode*[n];					// Heap memory
	
	// Or memset(p, (int)NULL, n * sizeof(mynode*));
	for(int i = 0; i < n; ++i)
	{
		p[i] = NULL;
	}	

	for(int i = 0; i < n; ++i)
	{
		p[i] = new mynode[m];						// Heap memory
		memset(p[i], (int)NULL, m * sizeof(mynode));// Method 2, include <cstring> or <string.h>
		printf("left=%p, right=%p\n", p[i][0].left, p[i][0].right);
		// p[i] = &n;								// This case don't use delete [] p[i]. (Pointer to a variable)
	}

	/*** do something ***/

	for(int i = 0; i < n; ++i)
	{
		delete [] p[i];
	}
	delete [] p;

	return 0;
}