小编Qia*_*ian的帖子

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

'/usr/include/c++/4.4/bits/'中位的含义是什么?

'/usr/include/c++/4.4/bits/'中位的含义是什么?

Linux,gcc当然.

c++ linux gcc g++ hierarchy

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

movl $ _start,%eax是什么意思?

'$'后面跟一个标识符是什么意思?

x86汇编,AT&T语法.

x86 assembly

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

是否有任何保证C++系统头的依赖?

例如,在<algorithm>中,函数equal_range返回pair,因此我可以假设,如果我#include <algorithm>,<utility>#included?

c++

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

gcc/g ++可以告诉我何时忽略了我的注册?

使用gcc/g ++编译C/C++代码时,如果它忽略了我的寄存器,它可以告诉我吗?例如,在此代码中

int main()
{
    register int j;
    int k;
    for(k = 0; k < 1000; k++)
        for(j = 0; j < 32000; j++)
            ;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

j将用作寄存器,但在此代码中

int main()
{
    register int j;
    int k;
    for(k = 0; k < 1000; k++)
        for(j = 0; j < 32000; j++)
            ;
    int * a = &j;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

j将是一个正常变量.它可以告诉我我使用寄存器的变量是否真的存储在CPU寄存器中?

c c++ gcc g++ cpu-registers

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

那么函数指针的*可以省略吗?

gcc似乎在告诉我int foo(int (*f)(void))int foo(int (f)(void)) f指向函数的指针是一样的,它不返回任何参数int.为什么我们可以省略*这里.

不过,我也尝试过int (*p)(void)int (p)(void).第一个p是函数指针,第二个是函数.

那么,发生了什么?在什么情况下可以省略星号?我在K&R中查找并没有发现任何东西.

c function-pointers shorthand

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

为什么要为一个POSIX函数包含多个标题?

根据手册页getaddrinfo(3),我需要

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
Run Code Online (Sandbox Code Playgroud)

使用该功能getaddrinfo.或者,根据标准:

#include <sys/socket.h>
#include <netdb.h>
Run Code Online (Sandbox Code Playgroud)

我明白我需要的东西像AF_INETSOCK_STEAM<sys/socket.h>.但我仍然有以下问题.

假设我只使用该getaddrinfo功能,我是否#include <sys/socket.h>必须符合标准?如果是这样,为什么不<netdb.h>包括它呢?如果没有,为什么手册页会在概要中包含它?

c standards posix header-files

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

CPU速度是否受从内存中获取指令的速度限制?

在学习汇编时,我意识到我应该将经常访问的数据放在寄存器中而不是内存中,因为内存要慢得多。

问题是,由于首先要从内存中获取指令,CPU如何比内存运行得更快?CPU通常会花费大量时间等待内存中的指令吗?

编辑:要运行程序,我们需要将其编译为包含机器代码的文件。然后,我们将该文件加载到内存中,然后逐条执行一条指令。CPU需要知道要运行的指令,然后从内存中获取那条信息。我不是在问要处理数据,而是要从内存中读取指令的过程。对不起,如果我不够清楚。

编辑2

示例:在我的计算机上xor eax, eax编译为31c0。我知道这条指令本身很快。但是要清除eax,CPU需要31c0首先从内存中读取。如果访问内存的速度很慢,那么读取操作将花费大量时间,而在此期间,CPU只是停顿了?

memory cpu performance cpu-architecture

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

为什么不是这种多态?

#include <cstdio>
#include <cstring>

class A
{
public:
    virtual void foo()
    {
        puts("A");
    }
};

class B : public A
{
public:
    void foo()
    {
        puts("B");
    }
};

int main()
{
    A a;
    B b;
    memcpy(&a, &b, sizeof (b));
    (&a)->foo();
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

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