// I know this is technically supposed to be C code. Please indulge me using cout to output the numbers, don't feel like using printf right now
#include <iostream>
#include <stdlib.h>
struct Test; // This is a forward declaration so that the typedef won't throw a warning
typedef Test* test_array;
struct Test {
int value;
Test *parent;
test_array *child;
};
int main()
{
Test *first = (Test *)malloc(sizeof(Test));
Test *second = (Test *)malloc(sizeof(Test));
Test *third = (Test *)malloc(sizeof(Test));
first->child = (test_array *)malloc(sizeof(test_array *) * 2);
first->child[0] = second;
first->child[1] = third;
second->value = 2;
third->value = 3;
std::cout << first->child[0]->value << first->child[1]->value;
// Let's clean up after ourselves!
free(second);
free(third);
free(first->child);
free(first);
}
Ly8gSSBrbm93IHRoaXMgaXMgdGVjaG5pY2FsbHkgc3VwcG9zZWQgdG8gYmUgQyBjb2RlLiBQbGVhc2UgaW5kdWxnZSBtZSB1c2luZyBjb3V0IHRvIG91dHB1dCB0aGUgbnVtYmVycywgZG9uJ3QgZmVlbCBsaWtlIHVzaW5nIHByaW50ZiByaWdodCBub3cKCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKc3RydWN0IFRlc3Q7ICAvLyBUaGlzIGlzIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBzbyB0aGF0IHRoZSB0eXBlZGVmIHdvbid0IHRocm93IGEgd2FybmluZwp0eXBlZGVmIFRlc3QqIHRlc3RfYXJyYXk7CgpzdHJ1Y3QgVGVzdCB7CiAgICBpbnQgdmFsdWU7CiAgICBUZXN0ICpwYXJlbnQ7CiAgICB0ZXN0X2FycmF5ICpjaGlsZDsKfTsKCmludCBtYWluKCkKewogICAgVGVzdCAqZmlyc3QgPSAoVGVzdCAqKW1hbGxvYyhzaXplb2YoVGVzdCkpOwogICAgVGVzdCAqc2Vjb25kID0gKFRlc3QgKiltYWxsb2Moc2l6ZW9mKFRlc3QpKTsKICAgIFRlc3QgKnRoaXJkID0gKFRlc3QgKiltYWxsb2Moc2l6ZW9mKFRlc3QpKTsKCiAgICBmaXJzdC0+Y2hpbGQgPSAodGVzdF9hcnJheSAqKW1hbGxvYyhzaXplb2YodGVzdF9hcnJheSAqKSAqIDIpOwoKICAgIGZpcnN0LT5jaGlsZFswXSA9IHNlY29uZDsKICAgIGZpcnN0LT5jaGlsZFsxXSA9IHRoaXJkOwoKICAgIHNlY29uZC0+dmFsdWUgPSAyOwogICAgdGhpcmQtPnZhbHVlID0gMzsKCiAgICBzdGQ6OmNvdXQgPDwgZmlyc3QtPmNoaWxkWzBdLT52YWx1ZSA8PCBmaXJzdC0+Y2hpbGRbMV0tPnZhbHVlOwoKICAgIC8vIExldCdzIGNsZWFuIHVwIGFmdGVyIG91cnNlbHZlcyEKICAgIGZyZWUoc2Vjb25kKTsKICAgIGZyZWUodGhpcmQpOwogICAgZnJlZShmaXJzdC0+Y2hpbGQpOwogICAgZnJlZShmaXJzdCk7Cn0=