【发布时间】:2011-12-16 11:47:34
【问题描述】:
我有以下代码:
#define MAX_NUMBER_OF_FRAMES 10
typedef struct my_frame_header {
unsigned int ul_Src;
unsigned int ul_Dest;
} MY_FRAME_HEADER;
typedef struct my_frame {
MY_FRAME_HEADER x_FrameHeader;
unsigned char uc_Frame[3000];
} MY_FRAME;
int main(int argc, char *argv[])
{
MY_FRAME *px_MyFrames;
px_MyFrames = (MY_FRAME *)malloc(sizeof(MY_FRAME) * MAX_NUMBER_OF_FRAMES);
// Use the x_MyFrames variable like an array
px_MyFrames[0].uc_Frame[0] = 10;
//free px_MyFrames
free(px_MyFrames);
return 1;
}
所有内存都会被成功释放吗?还是我需要在 MY_FRAME 的 Init 函数中使 uc_Frame 成为指针和 malloc 内存?然后在析构函数中为 px_MyFrames 的每个 uc_Frame 释放内存,然后释放 px_MyFrames? (对不起,如果有任何编译器错误,我只是即时写给你基本的想法)。如果我把它放在这里的方式不正确,并且存在内存问题,你能解释一下这些问题可能是什么吗?
【问题讨论】:
-
欢迎来到 StackOverflow,希望您阅读FAQ。
标签: c arrays memory malloc free