小编Laa*_*vaa的帖子

C++:为什么不能将静态函数声明为const或volatile或const volatile

可能重复:
C++ - 为什么不能使用'const'限定符创建静态成员函数

很想知道静态成员函数不能声明为const或volatile或const volatile的原因吗?

#include<iostream>

class Test 
{     
   static void fun() const 
   { // compiler error
       return;
   }
};
Run Code Online (Sandbox Code Playgroud)

c++

8
推荐指数
2
解决办法
8003
查看次数

为什么为结构的多个数据成员而不是单个成员添加填充?

为什么仅当存在多个结构成员时才添加填充的概念,为什么在存在单个基本数据类型成员时不包括填充?

如果我们考虑在32位机器上

struct 
{
    char a;
} Y;
Run Code Online (Sandbox Code Playgroud)

没有填充,并且Y的大小为1个字节.

如果我们考虑这个结构

struct 
{
    char a;
    int b;
} X;
Run Code Online (Sandbox Code Playgroud)

X的大小为8字节.

我的问题是为什么在第二种情况下填充添加?如果要通过机器进行高效访问,通常以4字节的倍数读取数据,那么为什么第一种情况下没有填充?

c c++ linux operating-system

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

向C ++中的主线程报告线程进度

在C / C ++中,我该如何使线程(POSIX pthreads / Windows线程)成为一种安全的方法,以便根据执行进度或我决定使用该线程执行的工作的进度,将进度传递回主线程。

是否可以按百分比报告进度?

c c++ multithreading pthreads thread-safety

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

在O(n)中返回文档中10个最常用的单词

如何设计一个算法,可以在O(n)时间内返回文档中10个最常用的单词?如果可以使用额外的空间.

我可以解析并将单词放在带有计数的哈希映射中.但接下来我必须对值进行排序以获得最常见的值.此外,我必须有一个映射btw值 - >键,由于值可能重复,无法维护.

那我怎么解决这个问题呢?

java algorithm complexity-theory time-complexity

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

为什么常量存储在C存储器映射中的文本段中?

您好请考虑下面的代码片段在Linux机器(64位)上用gcc编译,并带有相应的内存映射

#include <stdio.h>

int global = 2;

int main(void)
{
    int local = 0;

    return 0;
}

text       data     bss     dec     hex filename

1092        500      16    1608     648 mem
Run Code Online (Sandbox Code Playgroud)

这里因为有一个全局变量初始化为2.它存储在数据段中考虑使其成为const的情况,如下所示

#include <stdio.h>

int const global = 2;

int main(void)
{
    int local = 0;

    return 0;
}

text       data     bss     dec     hex filename
1096        496      16    1608     648 mem
Run Code Online (Sandbox Code Playgroud)

这里全局变量从数据段移动到文本段.

为什么它从数据移到文本段?

由于数据段分为读写区域,它应该存储在数据的读取区域中吗?

在代码中间初始化的未初始化的全局变量会发生什么?

c linux memory memory-management

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

具有填充的结构的大小

我有以下结构.在侧面计算尺寸的地方.填充后结构的大小应为30Bytes.但是大小是28.结构尺寸28如何?

#include <stdio.h>
struct a
{
    char t;      //1 byte+7 padding byte      Total = 8bytes
    double d;    //8 bytes                    Total = 16bytes
    short s;     //2 bytes                    Total = 18Bytes
    char arr[12];//12 bytes 8+8+4+12=32.      Total = 30Bytes
};
int main(void)
{
    printf("%d",sizeof(struct a));  // O/p = 28bytes
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c struct memory-management structure

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

new()和delete()作为C++中的运算符?

在c ++中将new()和delete()实现为运算符的用途或原因是什么?使它成为操作员而不是功能有什么好处?

c++ new-operator delete-operator

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