struct A{
int a;
};
struct B{
struct A *AAA;
int b;
};

int WinMain(~~~){
struct B *BBB = ( struct B * )malloc( sizeof( struct B ));
B->AAA = ( struct A * )malloc( sizeof( struct A ));
free( B );
return 0;
}
のようなプログラムがあった場合、AAAの確保した領域というのは解放されますか?