#include <stdio.h>
#include <string.h>

typedef struct mynode{
//some data
struct mynode *left , *right;
}mynode;

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

	for(i = 0; i < n; ++i)
	{
		p[i] = (mynode*)malloc(m*sizeof(mynode));						// 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(i = 0; i < n; ++i)
	{
		free(p[i]);
	}
	free(p);

	return 0;
}