首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问个内存错误的有关问题

2013-07-16 
问个内存异常的问题为什么程序会异常typedef struct tagA{struct tagA *nextstruct tagA *prev}TAtyped

问个内存异常的问题
为什么程序会异常
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 个字节哪里够.

热点排行