#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgbXlub2RlewovL3NvbWUgZGF0YQpteW5vZGUgKmxlZnQgLCAqcmlnaHQ7Cm15bm9kZSgpOiBsZWZ0KE5VTEwpLCByaWdodChOVUxMKSB7fTsJCQkJLy8gTWV0aG9kIDEKfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKCWludCBuID0gNTsKCWludCBtID0gMTA7CglteW5vZGUqKiBwID0gbmV3IG15bm9kZSpbbl07CQkJCQkvLyBIZWFwIG1lbW9yeQoJCgkvLyBPciBtZW1zZXQocCwgKGludClOVUxMLCBuICogc2l6ZW9mKG15bm9kZSopKTsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpCgl7CgkJcFtpXSA9IE5VTEw7Cgl9CQoKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpCgl7CgkJcFtpXSA9IG5ldyBteW5vZGVbbV07CQkJCQkJLy8gSGVhcCBtZW1vcnkKCQltZW1zZXQocFtpXSwgKGludClOVUxMLCBtICogc2l6ZW9mKG15bm9kZSkpOy8vIE1ldGhvZCAyLCBpbmNsdWRlIDxjc3RyaW5nPiBvciA8c3RyaW5nLmg+CgkJcHJpbnRmKCJsZWZ0PSVwLCByaWdodD0lcFxuIiwgcFtpXVswXS5sZWZ0LCBwW2ldWzBdLnJpZ2h0KTsKCQkvLyBwW2ldID0gJm47CQkJCQkJCQkvLyBUaGlzIGNhc2UgZG9uJ3QgdXNlIGRlbGV0ZSBbXSBwW2ldLiAoUG9pbnRlciB0byBhIHZhcmlhYmxlKQoJfQoKCS8qKiogZG8gc29tZXRoaW5nICoqKi8KCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKQoJewoJCWRlbGV0ZSBbXSBwW2ldOwoJfQoJZGVsZXRlIFtdIHA7CgoJcmV0dXJuIDA7Cn0=