求助 运行报错内存不可写
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef int Status;
typedef struct QNode{
ElemType data;
QNode *next;
}QNode,*QNodeList;
typedef struct {
QNodeList front;
QNodeList rear;
}Queue,*QueueList;
Status InitQueue(QueueList Q)
{
Q->front = Q->rear = (QNodeList)malloc(sizeof(QNode));
if(! (Q->front)) return 0;
Q->front->data=111;
Q->front->next = NULL;
//free(Q->front);
}
int main()
{
ElemType x=22;//如果把这句删除 就不报错了
QueueList Q;
InitQueue(Q);
//printf("%d",Q->front->data);
//ElemType a=22; printf("%d",a);
}
没找出来 什么错误 求各位帮帮忙
[解决办法]
#include<stdio.h>
char *func()
{
printf("%x ",*(char *)func);
return (char *)func;
}
int main()
{
char *p = NULL;
while(1){
p=func();
printf("%x \n",*p);
sleep(1);
}
return 0;
}
可以告诉你,结果99.9%都是我想要的"1234",我的p就没赋值.
#include<stdio.h>
#include<stdlib.h>
void func()
{
char *c=(char *)malloc(5);
*c = '1';
*(c+1)= '2';
*(c+2)= '3';
*(c+3)= '4';
*(c+4)= 0;
}
void test()
{
char *p;
printf("%s\n",p);
free(p);
}
int main()
{
func();
test();
return 0;
}
第2个test()中p根本没初始化,你可以试着改改func()中的赋值,看看结果.
用代码回答你的问题.只是说明一点,非法内存访问不一定会出错,但是绝对不要这么去做,因为你用到了不属于你的内存,那段内存你没有使用权,你永远不知到下一秒那段内存会被os分配给哪个程序.