#include <stdio.h>
#include<iostream>
using namespace std;
union obj
{
union obj *free_list_link;//指向后面的链表
char clent_data[1]; //obj对象o的地址&o和o.clent_data相等
};
int main()
{
obj o;
printf("%x\n", &o);
printf("%x\n", o.clent_data);
obj* _S_free_list[16] = {0};
for (int i = 0; i < 16; i++)
{
obj* volatile* __my_free_list = _S_free_list + i;
printf("_S_free_list=%x\n", _S_free_list);
//__my_free_list = ((obj*)__my_free_list)->clent_data
printf("__my_free_list=%x\n", __my_free_list);
printf("((obj*)__my_free_list)->clent_data=%x\n", ((obj*)__my_free_list)->clent_data);
obj* __result = (obj*)__my_free_list;
printf("__result=%x\n", __result);
//*__my_free_list = ((obj*)__my_free_list)->free_list_link
__result = *__my_free_list;
printf("__result=%x\n", __result);
__result = ((obj*)__my_free_list)->free_list_link;
printf("((obj*)__my_free_list)->free_list_link=%x\n", __result);
}
return 0;
2. 总结
obj* _S_free_list[16]= {0};
obj* volatile* __my_free_list = _S_free_list + i;
__my_free_list = ((obj*)__my_free_list)->clent_data
*__my_free_list = ((obj*)__my_free_list)->free_list_link