小编dre*_*rbs的帖子

FBString的小字符串优化是否依赖于未定义的行为?

Facebook的fbstring_core类使用中所描述的"小字符串优化" 这次谈话,其中的类的数据成员的存储-一Char*,sizecapacity-将被重新用于存储字符数据字符串是否足够小.用于区分这些情况的标志位位于"存储器的最右边的字符"中.我的问题是,是否通过bytes_union成员访问这些位(实际上从未编写过)是否构成了C++ 11标准的未定义行为?访问非活动联盟成员和未定义行为的答案表明它是.

以下摘录包含这些成员的声明以及category()用于确定此优化是否有效的成员函数.

    typedef uint8_t category_type;

    enum class Category : category_type {
      isSmall = 0,
      isMedium = kIsLittleEndian ? 0x80 : 0x2,
      isLarge = kIsLittleEndian ? 0x40 : 0x1,
    };

    Category category() const {
      // works for both big-endian and little-endian
      return static_cast<Category>(bytes_[lastChar] & categoryExtractMask);
    }

    struct MediumLarge {
      Char * data_;
      size_t size_;
      size_t capacity_;

      size_t capacity() const { …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior type-punning c++11

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

HTML 5视频标签可以选择IP多播流吗?

我一直在研究通过UDP获取IP多播到浏览器的方法,并且发现很少有人建议我可以在不使用Java,Flash或Silverlight之类的插件来打开UDP端口的情况下这样做并且(不知何故)渲染视频.

检查HTML 5 <video>规范,(显然)具体实现细节的方式很少,所以据我所知,没有什么能阻止浏览器解析"udp://224.1.1.1"形式的地址:8000"并加入该IP /端口上的组播组.这是正确的理解吗?或者必须是资源指向的资源<source>

html5 video-streaming html5-video

7
推荐指数
1
解决办法
3771
查看次数

python3元类的调用顺序

当试图了解metaclass创建类实例的顺序时,我感到困惑。根据此),在此处输入图片说明

我输入以下代码进行验证。

class Meta(type):
    def __call__(self):
        print("Meta __call__")
        super(Meta, self).__call__()

    def __new__(mcs, name, bases, attrs, **kwargs):
        print("Meta __new__")
        return super().__new__(mcs, name, bases, kwargs)

    def __prepare__(msc, name, **kwargs):
        print("Meta __prepare__")
        return {}

class SubMeta(Meta):
    def __call__(self):
        print("SubMeta __call__!")
        super().__call__()

    def __new__(mcs, name, bases, attrs, **kwargs):
        print("SubMeta __new__")
        return super().__new__(mcs, name, bases, kwargs)

    def __prepare__(msc, name, **kwargs):
        print("SubMeta __prepare__")
        return Meta.__prepare__(name, kwargs)

class B(metaclass = SubMeta):
    pass

b = B()
Run Code Online (Sandbox Code Playgroud)

但是,结果似乎不像下面这样。

SubMeta __prepare__
Meta …
Run Code Online (Sandbox Code Playgroud)

python metaclass

5
推荐指数
2
解决办法
638
查看次数