小编use*_*005的帖子

Valgrind在std :: make_unique中显示内存泄漏

我正在使用Valgrind来检查内存泄漏.不幸的是我收到了Leak_DefinitelyLost警告.

附件是我的代码的简化版本,它重现了错误:

#include <iostream>
#include <vector>
#include <memory>
#include <unordered_map>

using namespace std;

class Base{
public:
    explicit Base(double a){
        a_ = a;
    }
    virtual void fun() = 0;

    protected:
        double a_;
};


class Derived_A : public Base{

    public:
        Derived_A(double a, vector<double> b, vector<double> c): Base(a), b_{b}, c_{c}{
        }
        void fun() override{
            cout << "Derived_A " << a_ << endl;
        }

    private:
        vector<double> b_;
        vector<double> c_;
};


class Derived_B : public Base{

    public:
        Derived_B(double a, double b, double c): …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks undefined-behavior unique-ptr virtual-destructor

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

PyCharm 中的 Python SDK 无效

从今天早上开始,我无法再在 PyCharm 中运行项目。

生成新的虚拟环境时,出现“无效的 Python SDK”错误。无法在 Python 3.11 上设置 python SDK...该 SDK 似乎无效。

我注意到:无论我选择什么基本解释器(3.8、3.9、3.10),Pycharm 总是生成 Python 3.11 解释器。

我确实完全卸载了 PyCharm 以及所有 python 安装并重新安装了所有内容。我还浏览了 PyCharm 中的“修复 IDE”选项。我还删除并重新创建了所有虚拟环境。

当我运行“cmd”并输入“python”时,python 3.10.1 会毫无问题地打开。

今天早上,我安装了一个新的防病毒软件,做了一些检查并删除了一些“不需要的文件”——也许是相关的(防病毒软件又被卸载了)。

python pycharm

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

clang 格式:禁用排序包括

在我们的 C++ 项目中,包含的顺序会定期更改。这是一个问题,因为我们正在使用一些需要特定包含顺序的第三方库来避免问题。

我知道,这很糟糕,但我们必须处理它。

不幸的是,我们包含的顺序经常改变,我想这是由于clang-format. 我找到了一个页面,您可以在其中指定一个变量includeCategories。但是,我并不完全了解它是如何工作的。我只是想完全禁用包含的排序。我怎样才能做到这一点?

c++ include clang-format

6
推荐指数
2
解决办法
4172
查看次数

git 子模块的公共子模块

我有一个main由多个子模块组成的应用程序AB并且utility_functions: 这两个子模块A及其B本身都包含该子模块utility_functions

main
|
|---- A
|     |
|     |---- utility_functions
|
|---- B
|     |
|     |---- utility_functions
|
|---- utility_functions
Run Code Online (Sandbox Code Playgroud)

现在utility_functions我的项目中有三次。通常sub_Asub_Bmain都应该指向同一个提交utility_functions

存储库中的代码必须能够A自行运行。如果我只克隆A它应该包括我的utility_functions

A
|
|---- utility_functions
Run Code Online (Sandbox Code Playgroud)

有没有办法只告诉主存储库中包含的子模块依赖相同的子模块utility_functions?或者这是否打破了子模块的想法,因为它们可以指向不同的提交?或者这只是一个坏主意?

main
|
|---- A
|     |
|     |----
|         |
|---- B   |
|     |   |
|     |   |
| …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

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

使用switch语句在函数中没有返回

我正在使用较旧的 gcc 版本(如果我没记错的话是 7.something)在 LINUX 中开发一个应用程序。最近我尝试在 Windows 上运行相同的应用程序。在 Windows 上,我使用 MinGW 作为编译器(使用 gcc 8.1.0)。

我在 Windows 上编译我的应用程序时遇到了这个错误消息:

警告:控制到达非空函数的结尾 [-Wreturn-type]

代码类似于以下内容:

class myClass {
protected:
    enum class myEnum{
        a,
        b,
    };

    int fun(myClass::myEnum e);
}
Run Code Online (Sandbox Code Playgroud)

int myClass::fun(myClass::myEnum e) {
    switch (e){
        case myEnum::a:{
            return 0;
        }
        case myEnum::b:{
            return 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白错误消息的意思,我只是想知道为什么它在 LINUX 中从来都不是问题。

这段代码真的有问题吗,我是否必须添加一些虚拟的 return 语句?

这个函数是否有一个分支会导致没有返回语句?

c++ return function switch-statement

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

Qt Web 程序集:配置工具包

我想为我的科学程序测试 QT WebAssembly。因此,我安装了 emscripten。

$em++ --version
Run Code Online (Sandbox Code Playgroud)

返回

emcc (Emscripten gcc/clang-like replacement) 1.38.30 (commit a5082b232617c762cb65832429f896c838df2483)...
Run Code Online (Sandbox Code Playgroud)

然后我使用 Qt WebInstaller 安装了 Qt。在我的安装目录中,我有一个wasm_32文件夹,其中包含binqmake

$ ~/Qt_web/5.13.2/wasm_32/bin/qmake --version 
Run Code Online (Sandbox Code Playgroud)

返回

QMake version 3.1
Using Qt version 5.13.2 in /home/myName/Qt_web/5.13.2/wasm_32/lib
Run Code Online (Sandbox Code Playgroud)

但是,当我启动 Qt creator 时,单击ProjectsI see a Kit called: Qt 5.13.2 WebAssemblybut I can't select it(它是灰色的)。当我单击管理套件时,我看到没有为 Qt 5.13.2.WebAssembly 选择 C ​​和 C++ 编译器。 套件

当我更改为Qt Versions. 警告说:

ABI detection failed: Make sure to use a matching compiler when building. …
Run Code Online (Sandbox Code Playgroud)

c++ qt build emscripten webassembly

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

XGBoost 警告:输入数据位于 cpu 上时在 cuda 上运行

我尝试使用 GPU 加速训练 XGBoost 模型。使用 gridsearch 训练模型时,我收到以下警告:

UserWarning:[17:29:04] 警告:/workspace/src/common/error_msg.cc:58:由于设备不匹配,回退到使用 DMatrix 进行预测。这可能会导致更高的内存使用率和更低的性能。XGBoost 运行在:cuda:0,而输入数据位于:cpu。潜在的解决方案:

  • 使用与增强器中的设备序号相匹配的数据结构。
  • 在调用 inplace_predict 之前设置助推器设备。

尽管给出了一些潜在的解决方案,但我不确定如何解释它们以及如何处理这些信息。令人惊讶的是,它只在使用 GridSearchCV 时出现。reg在下面的最小示例中,如果我直接使用而不是 ,则不会收到警告gs

我的Xy变量来自我使用 pandas 读取的 hdf5 文件。有人可以给我一个提示,告诉我如何改进我的代码而不发出警告吗?

import xgboost as xgb
from sklearn.model_selection import GridSearchCV
import numpy as np

if __name__ == "__main__":
    X = np.random.randn(100,2)
    y = np.random.randn(100)

    reg = xgb.XGBRegressor(device="cuda", tree_method="hist", max_depth=10, n_estimators=100)
    param_grid = {"gamma": [0.3]}

    gs = GridSearchCV(reg, param_grid, cv=5)
    gs.fit(X,y)     # warning
    # reg.fit(X,y)  # no warning
Run Code Online (Sandbox Code Playgroud)

套餐:

xgboost==2.0.1 …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn xgboost

5
推荐指数
0
解决办法
1133
查看次数

降价链接到标题

我正在使用GitLab编写一个read.me文件。

我试图创建指向标题的链接。根据Wiki,应该自动创建一个ID:

看这里

我使用以下方法创建了标题:

### 1. This is my Header
Run Code Online (Sandbox Code Playgroud)

并尝试创建指向它的链接:

[link](#1--this-is-my-header)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我究竟做错了什么?

markdown hyperlink gitlab

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

qt 图表删除标题/图例/的空间

我想在 QChartView 中显示 QPolarChart。

除了 QPolarChart 之外,我不会添加标题或图例。不幸的是,当我添加图表时,QPolarChart 周围有一些空白。我猜这是标题和/或图例的空间......

有没有办法减少这个空间?

我已经用过

chart->layout()->setContentsMargins(0, 0, 0, 0);
chart->setBackgroundRoundness(0);
Run Code Online (Sandbox Code Playgroud)

这有点帮助。

我想减少红边:

图像

c++ qt qtcharts qchart

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

函数调用共享指针,其对象应为const

我有一个a类型的变量A.

A a;
Run Code Online (Sandbox Code Playgroud)

我想调用一个函数,它将类型的const引用A作为输入参数.

fun(const A &a);
Run Code Online (Sandbox Code Playgroud)

在一些代码更改后,我决定最好将变量类型更改astd::shared_ptr<A>

std::shared_ptr<A> a;
Run Code Online (Sandbox Code Playgroud)

更改函数的最佳方法是什么fun,以确保对象a永远不会更改(它应该保持const)?

fun保持原样,我应该称之为:

fun(*a.get())
Run Code Online (Sandbox Code Playgroud)

还是有其他选择吗?不知怎的,这对我来说很难看......

我猜简单地改变funfun(const std::shared_ptr<A> &a)无法工作,因为我想确保该功能不会改变基本的对象,而不是共享的指针.

我不能使用,std::shared_ptr<const A> a因为有必要a在某个时候改变变量.

c++ smart-pointers shared-ptr

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