加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在调用free()时使用和号(&)

发布时间:2020-12-16 09:58:40 所属栏目:百科 来源:网络整理
导读:我正在查看的一些代码声明并稍后初始化指向结构的指针. mcsConsole_t *mcsConsole;mcsConsole = (mcsConsole_t *) malloc(sizeof (mcsConsole_t) ); 这个结构的typedef是: typedef struct { unsigned int reqType; /* Request Type */ unsigned int console
我正在查看的一些代码声明并稍后初始化指向结构的指针.

mcsConsole_t *mcsConsole;
mcsConsole = (mcsConsole_t *) malloc(sizeof (mcsConsole_t) );

这个结构的typedef是:

typedef struct {
    unsigned int   reqType;             /* Request Type                */
    unsigned int   consoleID;           /* Console ID                  */
    int            returnCode;          /* Return code                 */
    int            reasonCode;          /* Reason code                 */
    unsigned int   ecbArea;             /* ECB posted for responses    */
    char           reserved[4];         /* Available                   */
    cmdRequest_t  *cmdRequest;          /* Pointer to command request  */
    cmdResponse_t *cmdResponse;         /* Pointer to command response */
} mcsConsole_t;

释放此内存时,指针名称前面会包含一个&符号.

free(&mcsConsole);

这个的目的是什么,你什么时候使用&符号来免费通话?我习惯于通过简单地提供指针变量名来查看释放内存的代码.

int *ptr = malloc( sizeof(*ptr) );
free(ptr);

解决方法

这是程序中的一个错误.

指向的对象是mcsConsole,如果在文件范围声明,则具有静态存储持续时间,如果在块范围声明,则具有自动存储持续时间.您只能释放具有已分配存储持续时间的对象.

如果你在程序中看到free(& p)并且p不是宏,那么它可能是一个bug.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读