C语言 为堆中的结构元素分配内存



堆中的结构元素分配内存,但我遇到分段错误,请帮助我修复

#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 的首次访问将失败。

相关内容

  • 没有找到相关文章

最新更新