小编P__*_*J__的帖子

谁在管理 C lib 的内存,如“strtok”

当我想使用C lib函数时strtok,我发现它提供了一个堆点,我想用CPP RAII来管理这个堆指针。但我发现我无法释放它,是否有人在管理这部分内存?或者我如何确认它的生命周期?

在此输入图像描述

c++

-1
推荐指数
1
解决办法
86
查看次数

访问没有结构名称的结构

在下面的这段代码中,我想要一个要结合的指针,并使用该指针来访问在strucutre txcmsgeid内部定义的成员(例如)eid(8位字段)。我怎样才能做到这一点?

typedef union uCANTxMessageBuffer 
{
    struct
    {
        txcmsgsid CMSGSID;
        txcmsgeid CMSGEID;

    };
    int messageWord[4];

}CANTxMessageBuffer;
Run Code Online (Sandbox Code Playgroud)

c

-2
推荐指数
1
解决办法
67
查看次数

(char *)NULL - (char *)NULL 是未定义的行为吗?

((char *)NULL - (char *)NULL)UB吗?

海事组织的答案在这里不是微不足道的。有什么想法吗?

Godbolt 实验链接https://godbolt.org/z/zgVGk9

聚苯乙烯

我不是在问添加一些空指针的东西(就像在提议的欺骗中一样),而只是关于一种特殊情况

c null pointers pointer-arithmetic language-lawyer

-2
推荐指数
2
解决办法
216
查看次数

x ^= x & -x; 其中 x 是一个无符号整数调用 UB?

由于-运算符应用于xwhich is,此函数是否会调用未定义的行为unsigned?我搜索了标准,找不到解释。

unsigned foo(unsigned x)
{
    return x ^= x & -x;
}
Run Code Online (Sandbox Code Playgroud)

海事组织是的。

编辑
void func(unsigned x) 
{
    printf("%x", -x);
}

int main(void)
{
    func(INT_MIN);
}
Run Code Online (Sandbox Code Playgroud)

IMO唯一的解释是它被提升为更大的有符号整数大小,然后转换为无符号整数。

如果将其提升为更大的整数大小,如果没有更大的有符号整数类型会发生什么?

c language-lawyer

-4
推荐指数
1
解决办法
126
查看次数

标签 统计

c ×3

language-lawyer ×2

c++ ×1

null ×1

pointer-arithmetic ×1

pointers ×1