我正在使用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
从今天早上开始,我无法再在 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 会毫无问题地打开。
今天早上,我安装了一个新的防病毒软件,做了一些检查并删除了一些“不需要的文件”——也许是相关的(防病毒软件又被卸载了)。
在我们的 C++ 项目中,包含的顺序会定期更改。这是一个问题,因为我们正在使用一些需要特定包含顺序的第三方库来避免问题。
我知道,这很糟糕,但我们必须处理它。
不幸的是,我们包含的顺序经常改变,我想这是由于clang-format. 我找到了一个页面,您可以在其中指定一个变量includeCategories。但是,我并不完全了解它是如何工作的。我只是想完全禁用包含的排序。我怎样才能做到这一点?
我有一个main由多个子模块组成的应用程序A,B并且utility_functions: 这两个子模块A及其B本身都包含该子模块utility_functions。
main
|
|---- A
| |
| |---- utility_functions
|
|---- B
| |
| |---- utility_functions
|
|---- utility_functions
Run Code Online (Sandbox Code Playgroud)
现在utility_functions我的项目中有三次。通常sub_A,sub_B和main都应该指向同一个提交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) 我正在使用较旧的 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 语句?
这个函数是否有一个分支会导致没有返回语句?
我想为我的科学程序测试 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文件夹,其中包含bin和qmake:
$ ~/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) 我尝试使用 GPU 加速训练 XGBoost 模型。使用 gridsearch 训练模型时,我收到以下警告:
UserWarning:[17:29:04] 警告:/workspace/src/common/error_msg.cc:58:由于设备不匹配,回退到使用 DMatrix 进行预测。这可能会导致更高的内存使用率和更低的性能。XGBoost 运行在:cuda:0,而输入数据位于:cpu。潜在的解决方案:
- 使用与增强器中的设备序号相匹配的数据结构。
- 在调用 inplace_predict 之前设置助推器设备。
尽管给出了一些潜在的解决方案,但我不确定如何解释它们以及如何处理这些信息。令人惊讶的是,它只在使用 GridSearchCV 时出现。reg在下面的最小示例中,如果我直接使用而不是 ,则不会收到警告gs。
我的X和y变量来自我使用 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) 我正在使用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)
但它不起作用。我究竟做错了什么?
我想在 QChartView 中显示 QPolarChart。
除了 QPolarChart 之外,我不会添加标题或图例。不幸的是,当我添加图表时,QPolarChart 周围有一些空白。我猜这是标题和/或图例的空间......
有没有办法减少这个空间?
我已经用过
chart->layout()->setContentsMargins(0, 0, 0, 0);
chart->setBackgroundRoundness(0);
Run Code Online (Sandbox Code Playgroud)
这有点帮助。
我想减少红边:
我有一个a类型的变量A.
A a;
Run Code Online (Sandbox Code Playgroud)
我想调用一个函数,它将类型的const引用A作为输入参数.
fun(const A &a);
Run Code Online (Sandbox Code Playgroud)
在一些代码更改后,我决定最好将变量类型更改a为std::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)
还是有其他选择吗?不知怎的,这对我来说很难看......
我猜简单地改变fun到fun(const std::shared_ptr<A> &a)无法工作,因为我想确保该功能不会改变基本的对象,而不是共享的指针.
我不能使用,std::shared_ptr<const A> a因为有必要a在某个时候改变变量.
c++ ×6
python ×2
qt ×2
build ×1
clang-format ×1
emscripten ×1
function ×1
git ×1
gitlab ×1
hyperlink ×1
include ×1
markdown ×1
memory-leaks ×1
pycharm ×1
qchart ×1
qtcharts ×1
return ×1
scikit-learn ×1
shared-ptr ×1
unique-ptr ×1
webassembly ×1
xgboost ×1