小编rav*_*ang的帖子

放置到缓冲区之后,缓冲区和实例是否具有相同的void*地址?

请参阅以下代码:

unsigned char* p = new unsigned char[x];
CLASS* t = new (p) CLASS;
assert((void*)t == (void*)p);
Run Code Online (Sandbox Code Playgroud)

我可以假设(void*)t == (void*)p吗?

c++ placement-new language-lawyer c++11

14
推荐指数
2
解决办法
566
查看次数

联合中未命名结构的同名成员是错误还是GCC错误?

下面的代码可以在Visual C++中成功编译.我喜欢它,它很甜!

#include <stdio.h>

#ifdef _MSC_VER
    #pragma warning(push)
    #pragma warning(disable:4201)
    #pragma pack(push,1)
    #define PACKED
#else
    #define PACKED __attribute__ ((__packed__))
#endif

union A {
    struct {
        int a:1;
        int b:2;
        int c1:29;
    }PACKED;
    struct {
        int a:1;
        int b:2;
        int c2:28;
        int d:1;
    }PACKED;
    int val;
}PACKED;

#ifdef _MSC_VER
    #pragma pack(pop)
    #pragma warning(pop)
#endif
#undef PACKED

int main(){
    A test;
    test.val = 0x1078FFF7;
    printf("sizeof(A): %d, test.a: %d.\n", sizeof(A), test.a);
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

使用MSC构建的文件输出:

sizeof(A): 4, test.a: -1. …
Run Code Online (Sandbox Code Playgroud)

c++ gcc language-lawyer

14
推荐指数
3
解决办法
2925
查看次数

从浮动到双重,从双重到浮动的精确损失?

float fv = orginal_value;  // original_value may be any float value
...
double dv = (double)fv;
...
fv = (float)dv;
Run Code Online (Sandbox Code Playgroud)

应该fv完全等于original_value吗?任何精度都可能丢失?

c c++ floating-accuracy

10
推荐指数
1
解决办法
7286
查看次数

C++ 11/14/17确实支持"auto new"

声明一个像as一样的指针

CAMArrayRefHash<AMPSDK::H264Video::SEQ_PARAMETER_SET_RBSP>* h264_sps;
Run Code Online (Sandbox Code Playgroud)

最后为它创建一个实例:

h264_sps = new CAMArrayRefHash<AMPSDK::H264Video::SEQ_PARAMETER_SET_RBSP>();
Run Code Online (Sandbox Code Playgroud)

在C++ 11/14/17中有一个简单的方法吗?例如,auto new

h264_sps = auto new;
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
141
查看次数

标签 统计

c++ ×4

language-lawyer ×2

c ×1

c++11 ×1

floating-accuracy ×1

gcc ×1

placement-new ×1