小编Yua*_*Wen的帖子

如何在具有多个同名文件的项目的一个文件上设置断点?

我想在第45行的文件service.cpp上的gdb中设置一个断点,我这样做:

gdb> break service.cpp:45
Run Code Online (Sandbox Code Playgroud)

问题是我的应用程序中有许多service.cpp文件,它没有选择我感兴趣的文件.如何指定正确的service.cpp文件?

gdb breakpoints ambiguity

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

如何指定显示?

当我通过SSH运行某些程序时,例如firefox &,我收到错误

Error: no display specified 
Run Code Online (Sandbox Code Playgroud)

我想打开很多显示器,仍然显示stdout每个程序.

初步问题:如何指定显示以获得多个显示的程序?

Pablo Santa Cruz给出了以下代码作为解决方案.我不明白.

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &
Run Code Online (Sandbox Code Playgroud)

什么是yourmachineyourdomain.com在命令?

x11

54
推荐指数
9
解决办法
25万
查看次数

如果我将一个基类的析构函数从非虚拟更改为虚拟,会发生什么?

我遇到了一个基类,它的析构函数是非虚拟的,尽管基类有1个虚函数fv().该基类也有许多子类.其中许多子类定义了它自己的子类fv().

我不知道程序中如何使用基类和子类的细节.我只知道程序工作正常,即使基类的析构函数应该是虚拟的.

我想将基类的析构函数从非虚拟更改为虚拟.但我不确定后果.那么,会发生什么?在更改程序后,我还需要做些什么来确保程序正常工作?

跟进:在我将基类的析构函数从非虚拟更改为虚拟后,程序失败了一个测试用例.
结果让我很困惑.因为如果基类的析构函数不是虚拟的,那么程序将不会使用基类的多态.因为如果没有,它会导致未定义的行为.例如,Base *pb = new Sub.
所以,我认为如果我将析构函数从非虚拟更改为虚拟,它不应该导致更多的错误.

c++ virtual destructor virtual-destructor

21
推荐指数
4
解决办法
1681
查看次数

如何将参数传递给source命令调用的脚本?

我通过source命令调用脚本,并希望将参数传递给脚本.

我检查过man source,bash返回:

:[参数]
没有效果; 除扩展参数和执行任何指定的重定向之外,该命令不执行任何操作.返回零退出代码.

source filename [arguments]
从当前shell环境中的filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态.如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录.在PATH中搜索的文件不需要是可执行的.当bash不处于posix模式时,如果在PATH中找不到文件,则搜索当前目录.如果关闭shopt内置命令的sourcepath选项,则不搜索PATH.如果提供了任何参数,则在执行文件名时它们将成为位置参数.否则,位置参数不变.返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果未找到或无法读取文件名,则返回false.

它没有例子,所以我不明白.

linux bash

12
推荐指数
2
解决办法
7761
查看次数

什么时候会重新分配堆栈内存?

有如下代码:

int fun(){

    char* pc = NULL;

    {
        char ac[100] = "addjfidsfsfds";
        pc = ac;
    }

    ...

    pc[0] = 'd';
    printf("%s\n", pc);
    ...
}
Run Code Online (Sandbox Code Playgroud)

那么,我可以pcac结束范围之后安全使用吗?因为我不确定分配的堆栈内存是否ac会被编译器重新分配用于其他用途.

c pointers stack-memory

9
推荐指数
2
解决办法
587
查看次数

为什么是((unsigned int)x)*y ==((unsigned int)(x*y)总是如此?

我刚写了这些代码:

int x = -1;//x must be negative
unsigned int y = 1;//y must be positive
bool b;
for(; ; x--, y++){
    b = ((unsigned int)x) * y == ((unsigned int)(x * y));
}
Run Code Online (Sandbox Code Playgroud)

然后我发现这b总是如此.在我看来,((unsigned int)x)*y会溢出,但((unsigned int)(x*y))不会.我真的很难相信这是真的.这只是巧合还是这种现象背后有任何法律?

c++ implicit-conversion

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

警告不会被-Wall和-Werror视为错误

这是源文件get.c的内容:

#include <stdio.h>

int main(){
  //int i = 0;
  char b[10];
  gets(b);
  puts(b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我用这些命令编译它时

gcc -o get get.c -Wall -Werror
Run Code Online (Sandbox Code Playgroud)

输出是

/tmp/ccYEWZvx.o: In function `main':
get.c:(.text+0x10): warning: the `gets' function is dangerous and should not be used.
Run Code Online (Sandbox Code Playgroud)

但是当改变代码时

#include <stdio.h>

int main(){
  int i = 0; // **this line just be uncommented**
  char b[10];
  gets(b);
  puts(b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用相同的命令,输出是

cc1: warnings being treated as errors  
get.c: In function 'main':  
get.c:4: error: unused variable 'i'  
Run Code Online (Sandbox Code Playgroud)

那么,为什么这个未使用的变量警告被视为错误,而使用gets() …

c gcc compiler-errors compiler-warnings

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

在"算法简介"中,"严密代码"是什么意思?

我正在阅读"算法导论",作者多次提到"严密的代码"."紧"是否仅意味着与另一个算法相比,实现一种算法的代码较少?

在书中,作者说插入排序和快速排序都有"严密的代码",这使得算法更快.例如,尽管快速排序的时间复杂度相同,但快速排序通常比排序更快.

当然,我不认为"紧密代码"意味着在没有正确格式化,额外空格,空行的情况下编写代码.

algorithm performance

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

GDB控制台无法显示printf的结果

我在RedHat中使用gdb来调试C++代码.为了更好地调试我的代码,我补充道printf("XXX").

但是,执行后printf("XXX"),gdb控制台没有显示XXX.

我的代码的其他部分工作正常.

c++ debugging printf gdb

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

gcc7.2:参数范围超过最大对象大小 9..7 [-Werror=alloc-size-larger-than=]

该程序包含如下代码:

int size;
...
int *pi = (int*)calloc(size, sizeof(int));
...
Run Code Online (Sandbox Code Playgroud)

这是用gcc7.2编译时的错误信息?

错误:参数 1 范围 [18446744071562067968, 18446744073709551615] 超过最大对象大小 9223372036854775807 [-Werror=alloc-size-larger-than=]

当我
int *pi = (int*)calloc(size, sizeof(int)); 改为
int *pi = (int*)calloc((unsigned int)size, sizeof(int));

错误消失了。

但是,在程序中,有很多malloccalloc我原来的版本一样使用。

为什么gcc只检测到一个错误?

c calloc gcc7

3
推荐指数
2
解决办法
3848
查看次数