问个内存异常的问题
为什么程序会异常
typedef struct tagA
{
struct tagA *next;
struct tagA *prev;
}TA;
typedef struct tagB
{
int a;
TA *ptA;
}TB;
int main()
{
TB *ptB;
ptB = (TB *)malloc(sizeof(TB));
ptB->ptA->next = NULL;
}
[解决办法]
不会, 分配 ptB 的时候, 只是为 ptA 分配了 4 个字节来放这个指针本身.
但是这个指针指向哪里还得单独分配.
就像你定义变量
TB *ptB;
是, 系统就会为 ptB 分配 4 个字节来存放指针本身, 但是这个指针的指向你还得另外初始化.
你看你的 sizeof(TB) 大小是 8 个字节, 如果里面要包含 a, ptA, next, prev 这些东西, 8 个字节哪里够.