C++ 中文周刊 第66期

reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态

周刊项目地址在线地址知乎专栏 腾讯云+社区

欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue

20220610更新。本期内容少的可怜


资讯

标准委员会动态/ide/编译器信息放在这里

编译器信息最新动态推荐关注hellogcc公众号 本周更新 2022-06-08 第153期

博览网之前的送书活动又开始了,需要付个邮费

扫码就行了

文章

阿里居然有c++编译器团队

值得一看

测了一组不同大小的结构体用的数据

std::string GetThemeName();

void Vulnerable()
{
    auto theme = GetThemeName().c_str();
    if (strcmp(theme, "Light") == 0) {
        SetLightTheme();
    } else if (strcmp(theme, "Dark") == 0) {
        SetDarkTheme();
    } else {
        SetDefaultTheme();
    }
}

这种异常泄漏有被攻击的可能性

Unique ptr的指定delete是模版参数的一部分,没有type erease,不同类型deleter就不能赋值了

template <typename T>
struct FakeDeleter {
  void operator()(T *ptr){
    std::cout << "FakeDeleter doesn't delete\n";
  } 
};

template <typename T>
struct LoggingDeleter {
    void operator()(T *ptr){
    std::cout << "LoggingDeleter is at work\n";
    delete ptr;
  } 
};
std::unique_ptr<int, FakeDeleter<int>> upFD (new int(42), FakeDeleter<int>());
std::unique_ptr<int, FakeDeleter<int>> upFD2 (new int(51), FakeDeleter<int>());
std::unique_ptr<int, LoggingDeleter<int>> upLD (new int(42), LoggingDeleter<int>());
upFD = std::move(upFD2); // OK
upFD = std::move(upLD); // NOT OK, fails to compile!
std::shared_ptr<int> spFD (new int(51), FakeDeleter<int>());
std::shared_ptr<int> spFD2 (new int(51), FakeDeleter<int>());
std::shared_ptr<int> spLD (new int(51), LoggingDeleter<int>());
spFD = spFD2;
spFD = spLD;

压测对比vector 和list,结果vector表现很好,主要是局部性的优势,把list底层的内存搞成一个整块内存,效果也不差。熟悉这种压测思路

视频

没啥说的。

ACCU 结束了。视频还没看。cppcon也没看完。最近挺忙。视频看得少

开源项目需要人手

新项目介绍/版本更新

没啥可推荐的

给大家整个梗图吧

工作招聘

有没有可以远程的工作可以联系我


本文永久链接

看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持! 觉得写的不错那就给点吧, 在线乞讨 微信转账