动态内存分配小问题
程序代码:#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct stu_power)
struct stu_power
{
char *stu_name;
unsigned int power;
struct stu_power *next;
};
int main ()
{
struct stu_power *head; //head存放 stu_power的首地址
head = (struct stu_power *) malloc(LEN);
head->stu_name = "xyz"; //malloc(LEN) 是12字节,malloc申请的内存是固定的呀, stu_name是一个字符指针啊,在未指向存储空间的时候怎么能赋值呢。
//那为什么head->stu_name还可以输入任意长度的字符串啊
head->power = 999;
printf ("%s --> %d\n", head->stu_name, head->power);
return 0;
}[ 本帖最后由 admin_xyz 于 2012-10-30 22:25 编辑 ]



对不起,版主,我比较笨
释放free(head) //head指向的内存空间释放掉,(包括char *stu_name) 所以 head->stu_name = (char *) malloc(50);//申请的50字节的空间也就没有指针去指向它了,z版,对么
版主的解释真详细,先说声谢谢。