如何检查malloc的嵌套结构的结果?在C



我可以为指向struct bmp_ptr的指针分配内存,并检查指针是否有效。但是我需要为headerdib成员分配内存,如何检查malloc()是否成功?我可以malloc(),但使用类型转换意味着malloc()的结果指针将消失。如何声明嵌套类型?

header:
typedef struct BMP_DIB BITMAPINFOHEADER;
// BMP_DIB definition follows..
// BMP_FILE_struct definition follows:
    typedef struct BMP_FILE_struct {
      BMPHEADER header;
      BITMAPINFOHEADER dib;
    } BMPFILE;

主要内部功能:

BMPFILE * bmp_ptr;
bmp_ptr = malloc(sizeof(BMPFILE));
if (bmp_ptr == NULL) return NULL;

[添加在注释后]

TL;DR-您不需要为编译时分配的变量分配动态内存[或者,检查地址是否为NULL]。它们将始终具有定义的内存位置,并且不能为NULL。

由于headerdib不是指针变量,因此不需要为它们分别使用malloc()。CCD_ 11—ing for bmp_ptr将为两者分配内存。


[当前已过时]

要点1。您不需要也请不要投射malloc()和family的返回值。

第2点。无论如何,Casting不会更改返回的,它与类型有关。

对于head或dib成员,我如何检查malloc是否成功?

您需要对照NULL检查bmp_ptr->header

  • 如果malloc()成功分配内存,那么您将获得一个非NULL
  • 如果malloc()失败,则返回NULL

dib也是如此。

注意:考虑到headerdib是指针类型的变量 如果它们不是指针,则不需要使用malloc()来分配内存

相关内容

  • 没有找到相关文章

最新更新