标题可能有点用词不当......只是因为我不确定我的char指针是否指向NULL,或者它只是指向大小为0的char数组.
所以我有
char* data = getenv("QUERY_STRING");
Run Code Online (Sandbox Code Playgroud)
我想检查数据是否为空(或长度<1).我试过了:
if(strlen(data)<1)
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
==24945== Invalid read of size 1
==24945== at 0x8048BF9: main (in /cpp.cgi)
==24945== Address 0x1 is not stack'd, malloc'd or (recently) free'd
Run Code Online (Sandbox Code Playgroud)
我也试过了
if(data == NULL)
Run Code Online (Sandbox Code Playgroud)
但结果相同.
这里发生了什么?我已经尝试过使用数据,这很好用.我似乎无法检查它是否为空或空.
我意识到这些是两个不同的东西(空和空).我想知道这里有哪一个数据,以及如何检查它是否为空/空.
在一个cpp文件中,我使用__DATE__
宏来获取编译日期.
它给了我该文件最后一次编译的日期.但由于文件不经常更改,因此在大多数情况下日期已经过时,有时甚至是几个月.
我真正想要的是项目最后一次构建的日期.
是否有设置强制VS2010在项目的每次编译时重建该单个cpp文件?无论文件有什么变化?
我到目前为止找到的唯一方法是在构建之前修改文件或通过脚本删除创建的obj文件,如果可能的话,我更喜欢VS内部的解决方案.
我正在使用这两个课程
// This is generic data structure containing some binary data
class A {
public:
A();
A(const A&);
~A();
}
// Main data container
class B {
public:
B();
B( const B&);
~B();
protected:
std::vector<A *> data;
}
// Copy constructor for class b
B::B( const B& orig):data() {
for( std::vector<A *>::const_iterator it = orig.data.begin();
it < orig.data.end(); ++it){
data.push_back( new A( *(*it)));
}
}
Run Code Online (Sandbox Code Playgroud)
我想这堂课会做到这一点,但我找到了如何达到完美的目标.
首先:data()
- 这是初始化空向量所需的初始化(这是编写一个好的和干净的代码的一部分)?
如何vector::iterator
在复制构造函数中使用,我找到的唯一方法就是我写入代码的方法(对于复制构造函数,const应该是必需的).
仅复制矢量会复制指针值而不是整个对象?
最后新的数据初始化...有什么办法可以用较小的代码替换整个循环和/或是否有任何标准如何为包含对象指针的std :: containers编写复制构造函数?
子问题:我假设使用vector<A …
我在Qt(4.7.2)中创建了一个多线程应用程序.只有主线程有一个事件循环.
问题是有时我在控制台中收到以下警告:
QObject::startTimer: timers cannot be started from another thread
Run Code Online (Sandbox Code Playgroud)
发生这种情况后,应用程序消耗100%的CPU(我有一个核心CPU).似乎主线程占用了所有CPU的资源.该程序不会冻结,一切仍然有效.
当我在调试器中停止程序时,我在调用堆栈中看不到我的代码.
问题是我根本没有使用(明确地,无论如何)定时器.
有什么可以与之相关?我知道,这个问题很常见,但我甚至无法理解,要展示哪些代码.
在我安装Visual Studio之前,我一直在使用其他IDE,例如codeblocks和Dev C++,并且有一个很好的选择,当我写的时候{
,它会自动关闭循环并将光标移到一个新行,我不需要像在Visual Studio中一样手动执行.在Visual Studio中有这样的选项吗?如果是这样,我该如何启用它?
在SciKit-Learn Random Forest分类器的文档中,有人说
子样本大小始终与原始输入样本大小相同,但如果bootstrap = True(默认),则使用替换绘制样本.
我不明白的是,如果样本大小总是与输入样本大小相同,那么我们如何谈论随机选择.这里没有选择,因为我们在每次训练时使用所有(并且自然相同)的样本.
我在这里错过了什么吗?
我从这里读到了这段话:http://www.cplusplus.com/doc/tutorial/dynamic/
您可能想知道声明正常数组和为指针分配动态内存之间的区别,正如我们刚刚所做的那样.最重要的区别是数组的大小必须是一个常量值,它将其大小限制为我们在设计程序之前决定的时间,在执行之前,而动态内存分配允许我们在使用任何变量或常量值作为其大小执行程序(运行时).
但是这个我的代码工作得很好:
int number;
cin>>number;
int myArray[number];
cout<<sizeof(myArray)/sizeof(myArray[0])<<endl;
cout<<sizeof(myArray)<<endl;
Run Code Online (Sandbox Code Playgroud)
这是否意味着数组是在动态内存中创建的?或者它是在静态内存中创建的,但它的大小仍然在运行时确定?
我正在使用
nohup ./program_name &
Run Code Online (Sandbox Code Playgroud)
为了运行我的程序,program_name 会打印出正在运行的进程的一些值和状态,包括程序已完成的百分比,但由于我使用 nohup 运行它,所以我看不到我的程序有多接近完成,有没有无论如何我仍然可以获得这些信息?
我正在尝试做一个简单的设计来选择颜色,我正在使用QToolButton来打开QColorDialog.我的问题是,我希望QToolButton是所选颜色,但我只是设置了背景颜色,这不是我想要的.
这是一张图片:
我的代码:
QColor color = QColorDialog::getColor(m_couleur);
if (color.isValid()) m_couleur=color;
m_labelCouleur->setPalette(QPalette(m_couleur));
m_labelCouleur->setAutoFillBackground(true);
m_buttonCouleur->setPalette(QPalette(m_couleur));
m_buttonCouleur->setAutoFillBackground(true);
Run Code Online (Sandbox Code Playgroud)
基本上我希望QToolButton看起来像这样:
编辑:任何人都可以向我解释为什么网站不会让我在开头添加"大家好"?
c++ ×7
qt ×2
arrays ×1
c ×1
containers ×1
linux ×1
nohup ×1
null ×1
python ×1
qt4 ×1
scikit-learn ×1
ssh ×1
subsampling ×1
unix ×1
vector ×1