为
堆中的结构元素分配内存,但我遇到分段错误,请帮助我修复
#include<stdio.h>
struct st
{
int i;
int *p;
char ch;
};
int main()
{
struct st *q; // creating object pointer *q
int i=89;
q->p=malloc(10);
printf("%dn",*((q->p)-1)); // i m printing size allocated in heap?
q->p=&i; // storing address i in structure element *p
printf("%dn",*(q->p)); // segmentation fault?
}
>struct st *q;
声明一个指向结构的指针。 q
指向未知内存位置。您还需要为q
分配内存,否则它将调用未定义的行为。
struct st *q = malloc(sizeof(struct st));
此外,q->p=&i;
会导致内存泄漏。
要确定哪一行代码会错误您的程序,最简单的技巧之一是在一行可疑的行之后打印f("令人讨厌的东西"(。
通过这样做,您会发现对 q 的首次访问将失败。