相关疑难解决方法(0)

什么是C++ 20中的协同程序?

什么是中的协同程序?

它与"Parallelism2"或/和"Concurrency2"的不同之处(见下图)?

以下图片来自ISOCPP.

https://isocpp.org/files/img/wg21-timeline-2017-03.png

在此输入图像描述

c++ coroutine c++20

84
推荐指数
2
解决办法
4万
查看次数

应该何时返回值,而不是返回唯一指针

我想知道的是,按值传递Cat实际上与返回std::unique_ptr<Cat>传递它们,内存管理以及在实践中使用它们有何不同.

记忆管理明智,不一样吗?因为返回值对象和包装在unique_ptr中的对象,一旦它们超出范围,它们的析构函数会被触发吗?

那么,你将如何比较两段代码:

Cat catFactory(string catName) {
    return Cat(catName);
}

std::unique_ptr<Cat> catFactory(string catName) {
    return std::unique_ptr(new Cat(catName));
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management unique-ptr c++11 return-by-value

4
推荐指数
2
解决办法
646
查看次数

资源泄漏或误报

我有这样的代码:

std::string getInfo(FILE *fp)
{
    char buffer[30];
    if (fread(buffer, 19, 1, fp) == 1)
        buffer[19] = '\0';
    else
        buffer[0] = '\0';

    return buffer;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 cppcheck 进行静态分析,它会发出警告:

error: Resource leak: fp [resourceLeak]
 return buffer;
 ^
Run Code Online (Sandbox Code Playgroud)

在我看来,由于返回是按值计算的,因此数据将从“缓冲区”复制到 std::string 的存储中,因此不会发生泄漏。

这会带来一些真正的问题还是误报?

c++ static-analysis filehandle file-pointer cppcheck

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