当前位置: 首页 > news >正文

某狐畅游24校招-C++开发岗笔试(单选题)

某狐畅游24校招-C++开发岗笔试

目录

  • 某狐畅游24校招-C++开发岗笔试
    • 一、单选题
    • 二、单选题解析

本文题目源来自:[PTA程序设计类实验辅助教学平台](PTA | 程序设计类实验辅助教学平台)

一、单选题

1-1 若有说明 int a[2][3]; 则对 a 数组元素的正确引用是

A. a[0][1+1]
B. a[1][3]
C. a[1,3]
D. a(1)(1)

查看解析

1-2 下面有关重载函数的说法中正确的是

A. 重载函数名可以不同 B. 重载函数形参个数必须不同

C. 重载函数必须具有不同的返回值类型 D. 重载函数必须有不同的形参列表

查看解析

1-3 对于该程序,以下说法正确的是

int CY=-1;
do{CY=CY*CY;}while(!CY);

A. 循环执行一次 B. 循环执行两次 C. 是死循环 D. 有语法错误

查看解析

1-4 设数组定义为:

char XZ[ ]="ChangYou";

则数组 XZ 所占的空间为

A. 6 个字节 B. 7 个字节 C. 8 个字节 D. 9 个字节

查看解析

1-5a 是一个二维数组,则 a[i][j] 的指针访问方式为

A. *(a+i+j)
B. *(*(a+i)+j)
C. *(a+i)+j
D. *a+i+j

查看解析

1-6

union MyUnion
{int a;short b;
};int main()
{MyUnion value;value.a = 3;printf("%d", value.b & 1);
} 

在大端模式下输出结果是什么?

A. 3 B. 1 C. 2 D. 0

查看解析

1-7

int main()
{int a = 10;int* b = &a;*b = 0;std::cout << a;
} 

输出结果是

A. 0 B. 10 C. 不固定 D. 以上都不是

查看解析

1-8

class A
{public:A() {num++;}virtual void print() { std::cout << num; }private:int num = { 0 };
};
class B : public A
{public:virtual void print() { std::cout << num; }private:int num = { 0 };
};int main()
{A* a = new B();a->print();
}

以上输出结果是什么

A. 0 B. 1 C. 3 D. 4

查看解析

1-9

int main()
{int i = 0;int x = 0;do {if (i % 5 == 0){std::cout << x;x++;}++i;} while (i < 10);std::cout << x;return 0;
}

输出结果是什么?

A. 01 B. 02 C. 012 D. 011

查看解析

1-10

class A 
{public:virtual void a() = 0;A() {std::cout << "A ";}
};
class B : public A
{public:B() {std::cout << "B ";}
};int main() 
{A* a = new B();return 0;
} 

输出结果是什么?

A. A B B. B A C. 编译错误 D. 以上都不是

查看解析

1-11

class No
{public:virtual void printf() = 0;private:int* ptr;
};int main()
{int size = sizeof(No);printf("%d", size);
} 

在64位系统下输出结果是什么?

A. 1 B. 4 C. 8 D. 16

查看解析

1-12 虚拟存储的基础是程序局部性理论,它的基本含义是

A. 代码的顺序执行

B. 程序执行时对内存访问的不均匀性

C. 变量的连续访问

D. 指令的局部性

查看解析

1-13m 个进程共享同一临界资源,若使用信号量机制实现对该临界资源的互斥访问,则信号量的变化范围是

A. 1 至 1−m

B. 1 至 m−1

C. 1 至 −m

D. 1 至 m

查看解析

1-14 下列信息中,一般不属于进程控制块的信息是

A. 进程标识符

B. 进程状态

C. I/O 设备状态

D. 处理机状态

查看解析

1-15 下面哪种内存管理方法有利于程序的动态链接?

A. 分段存储管理

B. 分页存储管理

C. 可变分区分配

D. 固定分区分配

查看解析

1-16 某系统釆用 LRU 页置换算法和局部置换策略,若系统为进程 P 预分配了 4 个页框, 进程 P 访问页号的序列为 0, 1, 2, 7, 0, 5, 3, 5, 0, 2, 7, 6,则进程访问上述页的过程中,产生页置换的总次数是

A. 3

B. 4

C. 5

D. 6

查看解析

1-17 执行()操作时,需要使用队列作为辅助存储空间。

A. 查找哈希表

B. 广度优先搜索图

C. 先序遍历二叉树

D. 深度优先搜索图

查看解析

1-18 堆的形状是一棵

A. 完全二叉树

B. 满二叉树

C. 二叉排序树

D. 平衡二叉树

查看解析

1-19 以下哪个数据结构底层是用红黑树实现的?

A. vector

B. list

C. map

D. deque

查看解析

1-20 对包含 n 个元素的散列表进行检索,平均检索长度为

A. O(logn)

B. O(n)

C. O(nlogn)

D. 不直接依赖于 n

查看解析

1-21 排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列中,不可能是快速排序第二趟结果的是

A. 5,2,16,12,28,60,32,72

B. 2,16,5,28,12,60,32,72

C. 2,12,16,5,28,32,72,60

D. 5,2,12,28,16,32,72,60

查看解析

1-22 假定 T 是一个 C++ 类,下列语句执行之后,内存里创建了多少个 T 对象?

T b(5);
T c[6];
T &d = b;
T e=b;
T *p = new T (4);

A. 5

B. 8

C. 9

D. 12

查看解析

1-23 假设字符串 char a[] = "abc123"char b[] = "xyz",那么使用字符串连接函数 strcat(a, b) 连接字符串 ab 之后得到的结果是

A. abc123xyz

B. abc123

C. xyz

D. 内存溢出

查看解析

1-24

enum string{    x1,    x2,    x3 = 10,    x4,    x5,    
} x;

函数外部访问 x 等于什么?

A. 5 B. 12 C. 0 D. 随机值

查看解析

1-25 关于以下代码,哪个说法是正确的?

myClass::foo(){delete this;
}
..
void func(){myClass *a = new myClass();a->foo();
}

A. 它会引起栈溢出 B. 都不正确 C. 它不能编译 D. 它会引起段错误

查看解析

1-26

struct T {char a;int *d;int b;int c:16;double e;
};
T *p;

在 64 位系统以及 64 位编译器下,以下描述正确的是

A. sizeof§ == 24 B. sizeof(*p) == 24 C. sizeof(p->a) == 1 D. sizeof(p->e) == 4

查看解析

二、单选题解析

1-1解析

A. a[0][1+1] 等价于 a[0][2]。由于 a 是一个2行3列的数组,a[0][2] 是有效的,因为它访问的是第0行第2列的元素(数组索引从0开始)。

B. a[1][3] 试图访问第1行第3列的元素。但是,由于 a 是一个2行3列的数组,它的索引范围是 [0, 1] 对于行和 [0, 2] 对于列。因此,a[1][3] 是越界的,不正确。

C. a[1,3] 这种语法在C语言中是无效的。C语言不支持使用逗号 , 来同时索引数组的两个维度。应该使用 a[1][3](尽管这个具体值越界了,但语法上应该使用方括号 [])。

D. a(1)(1) 这种语法在C语言中也是无效的。C语言不支持使用圆括号 () 来索引数组。应该使用方括号 []

正确答案:A

返回1-1题目

1-2解析

A. 重载函数名可以不同:不正确。函数重载的定义就是函数名相同但参数列表不同。如果函数名不同,那就是不同的函数,而不是重载。

B. 重载函数形参个数必须不同:不正确。虽然形参个数不同是一种重载方式,但重载还可以通过参数类型不同或参数顺序不同来实现。只要参数列表(包括参数类型和数量)不同,就可以构成重载。

C. 重载函数必须具有不同的返回值类型:函数重载与返回值类型无关。即使两个函数的返回值类型不同,如果它们的参数列表相同,也不能构成重载。

D. 重载函数必须有不同的形参列表:这是正确的。函数重载的关键在于参数列表的不同,可以是参数的数量不同,也可以是参数的类型不同,或者参数的顺序不同(对于某些特定的类型,如用户自定义类型)。只要参数列表不同,就可以构成重载。

正确答案:D

返回1-2题目

1-3解析

初始化变量 CY-1。进入do-while循环体,首先计算CY = CY * CY。第一次计算时,CY = -1 * -1 = 1。循环结束后,检查while条件!CY。

在第一次循环后,CY 的值为 1,所以 !CY(即 !1)为 false(因为 1 是非零值,在C/C++中,非零值表示真,而零表示假,但 ! 操作符会将其反转)。由于 while 条件为 false,循环将不会再次执行。

正确答案:A

返回1-3题目

1-4解析

在C语言中,字符串是以字符数组的形式存储的,且字符串的末尾会自动添加一个空字符 \0 作为结束标志。这个空字符也是数组的一部分,会占用存储空间。

因此,数组 XZ 的总长度为:8个字符(‘C’, ‘h’, ‘a’, ‘n’, ‘g’, ‘Y’, ‘o’, ‘u’) + 1个字符(\0) = 9个字符

每个字符占用1个字节,所以数组 XZ 所占的空间为9个字节。

正确答案:D

返回1-4题目

1-5解析

A. *(a+i+j)a+i+j 试图将行索引和列索引相加,然后将其用作一个单一的指针偏移量,这并不符合二维数组的访问方式。

B. *(*(a+i)+j):正确的。a+i 是指向第 i 行的指针,*(a+i) 是第 i 行数组本身,*(a+i)+j 是指向第 i 行第 j 列元素的指针,最后 *(*(a+i)+j) 得到这个元素的值。

C. *(a+i)+j*(a+i)+j 是一个指针加上一个整数,结果仍然是一个指针,而不是元素的值。要得到值,你需要对结果再进行一次解引用(即 *(*(a+i)+j))。

D. *a+i+j*a 是第一行的第一个元素的值,而不是一个指针。然后 *a+i+j 试图将这个值(一个整数或字符等)与行索引和列索引相加,这是不合法的操作。

正确答案:B

返回1-5题目

1-6解析

大端模式(Big-Endian):在这种字节序中,数据的最高有效字节(MSB)存储在最低的内存地址,而最低有效字节(LSB)存储在最高的内存地址。

联合体(Union):在C/C++中,联合体是一种特殊的数据结构,它允许在相同的内存位置以不同的类型来存储数据。但是,一次只能存储联合中定义的某一个成员的值,因为所有成员共享同一块内存。

value.a = 3;:将整数3赋值给value.a。在大端模式下,整数3(假设为32位)在内存中的表示可能是00 00 00 03(十六进制)。

value.b:由于value.avalue.b共享同一块内存,当访问value.b时,我们实际上是在查看value.a的前两个字节(或更少,取决于short的大小)。在大端模式下,这两个字节是00 00

如果short是16位,那么value.b的值将是这两个字节组成的数,即0x0000,转换为十进制是0。

value.b & 1:这是计算value.b与1的按位与操作。由于value.b的值为0,0 & 1的结果也是0。

因此,无论short是16位还是更大的位数(只要不超过int的前几个字节),在大端模式下,value.b的值都将是由value.a的前几个字节决定的,而这些字节在value.a被赋值为3时都是0。

正确答案:D

返回1-6题目

1-7解析

在这个程序中,a 是一个整型变量,其初始值为 10。b 是一个指向整型的指针,它被初始化为指向 a 的地址(即 &a)。

接下来,通过解引用指针 b(即 *b),将 a 的值修改为 0。

因此,当执行 std::cout << a; 时,a 的值已经是 0,所以输出结果是 0。

正确答案:A

返回1-7题目

1-8解析

A 和类 B 都各自有一个名为 num 的私有成员变量。这意味着每个类实例都会有自己的 num 变量,并且它们之间不会相互影响。

在类 A 的构造函数中,num(类 Anum)被递增。但是,这个递增只影响类 A 实例的 num 变量,对类 Bnum 变量没有影响。

当创建 B 类的实例时(通过 new B()),首先会调用基类 A 的构造函数。在 A 的构造函数中,Anum 成员被递增到 1(假设没有其他 A 类的实例被创建)。然而,当调用 B 类的 print 方法时,它打印的是 B 类的 num 成员,该成员在 B 的构造函数中被初始化为 0。

因此,代码的输出将是: 0,因为 a->print() 实际上调用的是 B 类的 print 方法,它打印的是 B 类的 num 成员,该成员的值是 0。

正确答案:A

返回1-8题目

1-9解析

初始化 i 为 0,x 为 0。

进入 do-while 循环,该循环至少执行一次。

在循环中:

  • i = 0 时,i % 5 == 0 成立,输出 x(此时为 0),然后 x 自增变为 1,i 自增变为 1。
  • i = 1, 2, 3, 4 时,i % 5 != 0,不执行输出和 x 的自增,只执行 i 的自增。
  • i = 5 时,i % 5 == 0 成立,输出 x(此时为 1),然后 x 自增变为 2,i 自增变为 6。
  • i = 6, 7, 8, 9 时,同样 i % 5 != 0,只执行 i 的自增。

循环结束后,i 达到 10,退出循环。再输出 x 的当前值2。

正确答案:C

返回1-9题目

1-10解析

A包含了纯虚函数void a() = 0;,只要类中有纯虚函数,那么这个类就是抽象类。抽象类是不能直接用来创建对象实例的,不过可以定义指向抽象类的指针或者引用,用于实现多态性相关的操作。

B继承自类A,但是类B并没有对从类A继承过来的纯虚函数a()进行重写实现。所以类B也依然是抽象类,虽然在main函数中有A* a = new B();这样的语句,试图通过基类指针去创建派生类B的对象,但由于B仍然是抽象类,按照 C++ 语法规则,抽象类是不允许被实例化的,因此在编译阶段就会报错,无法得到具体的输出结果。

正确答案:C

返回1-10题目

1-11解析

在 C++ 中,虽然No类是一个抽象类(因为它包含了纯虚函数virtual void printf() = 0;),但是编译器依然会为其生成一个虚函数表指针(在 64 位系统下,这个指针的大小通常是 8 字节,用于指向类的虚函数表,虚函数表中存放着该类的虚函数的地址等相关信息)。

No类中还包含了一个int*类型的私有成员变量ptr,在 64 位系统中,指针类型的大小也是 8 字节。

类对象的大小计算遵循一定规则,一般来说要考虑成员变量以及编译器为实现多态等机制添加的相关内容(比如虚函数表指针)。对于No类,其大小主要由虚函数表指针和int*类型的成员变量这两部分组成,在 64 位系统下,虚函数表指针占 8 字节,int*成员变量占 8 字节,总共就是 8 + 8 = 16 字节。

正确答案:D

返回1-11题目

1-12解析

A. 代码的顺序执行:虽然程序的顺序执行是计算机运行的基础,但它并不直接描述程序对内存访问的不均匀性,即局部性原理。因此,A选项不是最佳答案。

B. 程序执行时对内存访问的不均匀性:这恰好描述了程序局部性理论的核心。程序在执行时,往往会不均匀地访问内存,即某些存储区域被频繁访问,而另一些则较少被访问。这种不均匀性构成了程序局部性理论的基础,包括时间局部性和空间局部性。因此,B选项是正确答案。

C. 变量的连续访问:虽然变量的连续访问可能表现出一定的局部性,但它并不全面描述程序局部性理论。程序局部性理论更多地关注程序执行过程中对整个内存访问模式的不均匀性。因此,C选项不是最佳答案。

D. 指令的局部性:指令的局部性虽然在一定程度上反映了程序执行的特点,但它更多地关注指令本身而不是内存访问。程序局部性理论主要关注的是内存访问的不均匀性。因此,D选项也不是最佳答案。

正确答案:B

返回1-12题目

1-13解析

临界资源应互斥使用,互斥信号量m的初值为1。当没有进程使用临界资源时,m值为1;有一个进程使用临界资源且无进程等待使用该资源时,m值为0;有一个进程使用临界资源且有一个进程等待使用该资源时,m值为 -1;依此类推,最多可能有m -1个进程等待使用该临界资源。对应信号量的值就是-(m-1)=1-m。

正确答案:A

返回1-13题目

1-14解析

A. 进程标识符:进程标识符是PCB中的关键信息之一,用于唯一地标识一个进程。它使得操作系统能够区分和管理不同的进程。因此,A选项是进程控制块的信息。

B. 进程状态:进程状态也是PCB中的重要信息,它描述了进程的当前状态(如就绪、运行、阻塞等)。操作系统根据进程状态来调度和管理进程。因此,B选项是进程控制块的信息。

C. I/O 设备状态:I/O设备状态通常描述的是与进程相关的输入/输出设备的状态,如设备是否忙碌、是否有I/O请求等待处理等。这些信息虽然与进程的执行有关,但它们并不直接存储在进程控制块中。相反,它们通常被保存在与I/O系统相关的数据结构中,或者由设备驱动程序进行管理。因此,C选项一般不属于进程控制块的信息。

D. 处理机状态:处理机状态信息包括处理器的各种寄存器中的内容,如通用寄存器、控制寄存器(如PSW寄存器)等。这些信息在进程切换时需要被保存和恢复,因此它们被存储在进程控制块中。所以,D选项是进程控制块的信息。

正确答案:C

返回1-14题目

1-15解析

A. 分段存储管理:分段存储管理允许程序被划分为不同的逻辑段,每个段对应程序中的一个逻辑单元(如主程序、子程序、数据等)。这种方式使得程序的逻辑结构更加清晰,易于组织和维护。更重要的是,分段存储管理支持动态链接,因为每个段都有自己的基址和界限,可以根据需要独立增长或缩小,从而适应动态链接时程序模块的变化。

B. 分页存储管理:分页存储管理将内存分为一系列固定大小的分区(页框或页帧),并将进程的信息存储在这些页框中。虽然分页存储管理也支持动态存储分配,但它更侧重于提供均匀划分的地址空间和内存保护,而不是直接支持程序的动态链接。分页存储管理主要通过页表来实现逻辑地址到物理地址的映射。

C. 可变分区分配:可变分区分配(又称动态分区分配)不预先划分内存,而是在程序装入内存时,根据进程的大小动态地建立分区。虽然这种方式提供了灵活性,但它本身并不直接支持程序的动态链接。动态分区分配主要关注的是如何有效地管理和利用内存空间。

D. 固定分区分配:固定分区分配将内存划分为大小相等或不等的固定分区,每个应用进程占用一个分区。这种方式缺乏灵活性,因为分区的大小是固定的,难以适应动态链接时程序模块的变化。

正确答案:A

返回1-15题目

1-16解析

系统采用 LRU 页置换算法:LRU(Least Recently Used)算法是一种常用的页面置换算法,它会选择最近最少使用的页面进行置换。

局部置换策略:这意味着页面置换只会在分配给进程的页框内进行,不会影响到其他进程的页框。

img

题中所问的是页置换次数,而不是缺页次数,即前四次缺页未换页的情况不计入在内,即产生页置换的总次数是为5次(缺页产生总次数为9次)

正确答案:C

返回1-16题目

1-17解析

查找哈希表:哈希表通过哈希函数将关键字映射到表中的某个位置,查找时直接根据哈希值定位,不需要辅助存储结构。因此,A选项不符合题意。

广度优先搜索图(BFS):BFS是一种遍历或搜索算法,它从根节点开始,首先访问所有相邻的节点,然后对于每一个已经访问过的相邻节点,再依次访问它们的相邻节点(已访问过的节点不再重复访问)。这个过程需要使用队列来存储待访问的节点,以保证按层次顺序访问。因此,B选项符合题意。

先序遍历二叉树:先序遍历是一种深度优先的遍历方式,它按照“根节点-左子树-右子树”的顺序进行遍历。这种遍历方式不需要使用队列,而是通常使用栈或递归来实现。因此,C选项不符合题意。

深度优先搜索图(DFS):DFS也是一种遍历或搜索算法,它沿着图的每一条分支尽可能深地搜索,直到达到叶节点或图的尽头,然后回溯并继续搜索其他未探索的分支。DFS通常使用栈或递归来实现,而不是队列。因此,D选项不符合题意。

正确答案:B

返回1-17题目

1-18解析

堆的定义:堆是一种特殊的完全二叉树。在堆中,每个节点的值都大于或等于(最大堆)或小于或等于(最小堆)其子节点的值。

完全二叉树:除了最后一层外,每一层都是满的,且最后一层的节点都靠左对齐。

满二叉树:除了叶子节点外,每个节点都有两个子节点。

二叉排序树(BST):左子树节点的值小于根节点的值,右子树节点的值大于根节点的值。

平衡二叉树:任何节点的两个子树的高度差不超过1。

正确答案:A

返回1-18题目

1-19解析

vector是C++ STL中的一个序列容器,它底层实现为动态数组。这意味着它会根据需要动态地调整其大小,并在内部使用连续的内存块来存储元素。因此,vector的底层并不是红黑树。

list同样是C++ STL中的一个序列容器,但它底层实现为双向链表。链表中的每个元素都包含数据部分和指向其前驱和后继元素的指针。这种结构使得list在插入和删除操作上具有高效性,但底层并不是红黑树。

map是C++ STL中的一个关联容器,它存储键值对,并根据键来排序和快速查找值。在C++ STL中,map的底层通常实现为红黑树。红黑树是一种自平衡的二叉查找树,它能在O(log n)的时间复杂度内完成插入、删除和查找操作。因此,map的底层是用红黑树实现的。

deque是C++ STL中的一个双端队列容器,它允许在两端进行高效的插入和删除操作。deque的底层实现通常为一个动态数组加上一些额外的指针,用于支持两端的操作。因此,deque的底层并不是红黑树。

正确答案:C

返回1-19题目

1-20解析

对于包含n个元素的散列表(哈希表)进行检索时,其平均检索长度(也称为平均查找时间或平均访问时间)并不直接依赖于n,而是受到散列函数的质量、散列表的大小(容量)、负载因子(即表中元素数量与表容量的比值)以及冲突解决策略等因素的影响。

负载因子:表中已占用位置数与总位置数的比值。负载因子越大,冲突的可能性越大,平均检索长度也越长。

散列函数:散列函数的分布特性影响关键字的映射情况。一个好的散列函数能够减少冲突,从而降低平均检索长度。

解决冲突的方法:如开放地址法、链地址法等。不同的方法会影响平均检索长度。

正确答案:D

返回1-20题目

1-21解析

快速排序是基于分治思想的一种排序算法,它首先会选择一个基准元素(Pivot),通过一趟排序将待排序序列划分为两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素。然后对划分后的左右两部分分别递归地进行排序,直到整个序列有序。

A选项(5,2,16,12,28,60,32,72):第一趟可以72为基准元素,第二趟以28为基准;

B选项(2,16,5,28,12,60,32,72):第一趟可以72为基准元素,第二趟以2为基准;

C选项(2,12,16,5,28,32,72,60):第一趟可以28为基准元素,第二趟以2为基准;

D选项(5,2,12,28,16,32,72,60):第一趟可以12为基准元素,第二趟没有可满足的;

正确答案:D

快速排序具体实现可参考视频:三分钟学会快速排序_哔哩哔哩_bilibili

返回1-21题目

1-22解析

T b(5);这行代码创建了 1个 T 类型的对象 b,并用 5初始化它。

T c[6];这行代码创建了一个包含 6 个 T 类型对象的数组 c。

T &d = b;这行代码创建了一个对 b 的引用 d。它并没有创建新的 T 对象,只是为 b 提供了一个别名。

T e = b;这行代码创建了1个新的 T 类型的对象 e,并用 b 初始化它。
T *p = new T(4);这行代码在堆上创建了1个新的 T类型的对象,并用 4 初始化它。p 是一个指向这个新对象的指针。

正确答案:C

返回1-22题目

1-23解析

char a[] = “abc123”;
char b[] = “xyz”;

字符串 a 初始化为 “abc123”,这意味着 a 数组在内存中占用了足够的空间来存储这 6 个字符加上一个空字符(\0),总共 7 个字符的空间。字符串 b 则初始化为 “xyz”,同样地,它占用了 4 个字符的空间(3 个字符加上一个空字符)。

当执行 strcat(a, b) 时,strcat 会将 b 中的字符(包括终止的空字符之前的所有字符)追加到 a 的末尾,并覆盖 a 字符串末尾的空字符。这意味着 a 需要有足够的空间来存储连接后的字符串及其终止的空字符。

在这个例子中,a 的原始空间只够存储 7 个字符。当执行 strcat(a, b) 后,a 需要存储 “abc123xyz”,这是 8 个字符(包括终止的空字符)。由于 a 的空间不足以存储这 8 个字符,因此会导致缓冲区溢出,即内存溢出。

正确答案:D

返回1-23题目

1-24解析

定义在函数外是全局变量,程序初始化为0;若是定义在函数内,编译器提示变量未初始化错误。

此时x1=0,x2=1,x3=10,x4=11,x5=12。

正确答案:C

返回1-24题目

1-25解析

delete this; 是一种合法的操作,在C++中允许对象通过其成员函数删除自身。这通常用于管理对象生命周期的高级模式,比如在某些单例模式或资源管理类中。

func 函数中,首先通过 new 操作符创建了一个 myClass 类型的对象,并将该对象的指针赋值给 a

然后通过 a->foo(); 调用了 myClass 的成员函数 foo,在 foo 中执行了 delete this;

内存管理和指针状态:当 delete this; 执行后,a 指向的内存已被释放。但重要的是,指针 a 本身并没有被设置为 nullptr 或以其他方式标记为无效。因此,a 仍然持有一个悬空指针(dangling pointer),指向已经被释放的内存。

A. 它会引起栈溢出:栈溢出通常发生在递归调用过深或局部变量过多时。这里不涉及递归调用,也没有过多的局部变量,因此不会引起栈溢出。

B. 都不正确:其他三项都不正确故选B

C. 它不能编译:代码语法正确,没有编译错误。

D. 它会引起段错:段错误(segmentation fault)通常发生在访问无效内存时。在这个例子中,delete this; 后,a 指向的内存被释放,但 a 指针本身未被置空。如果接下来通过 a 访问已被释放的内存(尽管示例代码中没有这样的操作),则可能会引起段错误。然而,仅凭这段代码本身,并没有直接的段错误发生,因为 a 指针在 delete this; 后未被使用。

正确答案:B

返回1-25题目

1-26解析

指针大小:在 64 位系统中,指针的大小通常是 8 字节(64 位)。

基本数据类型大小:char 通常是 1 字节,int 通常是 4 字节(32 位),double 通常是 8 字节(64 位)。

结构体内存对齐:编译器可能会插入填充字节以满足对齐要求,以提高访问速度。

A. sizeof(p) == 24:错误。p 是一个指向 T 的指针,在 64 位系统中,指针大小为 8 字节。

B. sizeof(*p) == 24:错误。*pT 类型的一个实例。如前所述,T 的大小可能因填充字节而大于 24 字节。

C. sizeof(p->a) == 1:正确。p->achar 类型,其大小是 1 字节。

D. sizeof(p->e) == 4:错误。p->edouble 类型,其大小是 8 字节。

正确答案:C

返回1-26题目

相关文章:

某狐畅游24校招-C++开发岗笔试(单选题)

某狐畅游24校招-C开发岗笔试 目录 某狐畅游24校招-C开发岗笔试一、单选题二、单选题解析 本文题目源来自&#xff1a;[PTA程序设计类实验辅助教学平台](PTA | 程序设计类实验辅助教学平台) 一、单选题 1-1 若有说明 int a[2][3]; 则对 a 数组元素的正确引用是 A. a[0][11]B. …...

spring mvc | servlet :serviceImpl无法自动装配 UserMapper

纯注解SSM整合 解决办法&#xff1a; 在MybatisConfig添加 Configuration MapperScan("mapper")...

在 CentOS 上安装 MySQL 8

在 CentOS 上安装 MySQL 8 您可以按照以下步骤操作&#xff1a; 1. 更新系统 首先&#xff0c;更新系统软件包以确保安装的最新版本。 sudo yum update -y 2. 安装 MySQL 8 安装 MySQL 存储库 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.r…...

EMC VMAX/DMX 健康检查方法

近期连续遇到2个由于对VMAX存储系统没有做及时的健康检查&#xff0c;出现SPS电池故障没有及时处理&#xff0c;然后同一pair就是同一对的另外一个SPS电池再次出现故障&#xff0c;然后存储系统保护性宕机vault&#xff0c;然后业务系统挂掉的案例。 开始之前&#xff0c;先纠…...

深入理解Kafka:核心设计与实践原理读书笔记

目录 初识Kafka基本概念安装与配置ZooKeeper安装与配置Kafka的安装与配置 生产与消费服务端参数配置 生产者客户端开发消息对象 ProducerRecord必要的参数配置发送消息序列化分区器生产者拦截器 原理分析整体架构元数据的更新 重要的生产者参数acksmax.request.sizeretries和re…...

Ubuntu命令行网络配置

临时连接 为什么需要临时连接&#xff0c;你最好测试你的网络适配器驱动能够连接到网络&#xff0c;然后再进行进一步的配置自动连接&#xff0c;否则也许会一直处在“折腾”中。 查看网络状态 ip addr show激活网络接口&#xff1a; sudo ip link set <适配器名称> up使…...

Wireshark软件下载安装及基础

前言 本次学习的是在b站up主泷羽sec课程有感而发&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 &#xff01;&#xff01;…...

16asm - 宏汇编语法

文章目录 前言宏汇编表达式算术表达式逻辑运算关系运算符 标号匿名标号调整偏移量指令ORG当前地址指令$ 结构体宏equ语句语句macro语句 多文件编译源文件头文件函数使用全局变量编译 选择结构循环结构 总结 前言 各位师傅大家好&#xff0c;我是qmx_07,今天讲解 宏汇编的相关内…...

5.C语言内存分区-堆-栈

目录 内存分区 运行之前 代码区 全局初始化数据区 、静态数据区 (data) 未初始化数据区(bss&#xff08;Block Started by Symbol&#xff09;区) 总结 运行之后 代码区 &#xff08;text segment&#xff09; 未初始化数据区(bss) 全局初始化数据区&#xff0c;静态…...

【模拟】饮料促销

题目描述 暑期到了&#xff0c;各大商场都开始举办饮料促销优惠活动&#xff0c;卡卡维他命水凭3个瓶盖可以再换一瓶并且可以一直循环下去(但不允许暂借或赊账)。请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那么对于他初始买入的 n 瓶…...

RFdiffusion get_torsions函数解读

函数功能 get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。 输入参数 xyz…...

重拾设计模式--组合模式

文章目录 1 、组合模式&#xff08;Composite Pattern&#xff09;概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式&#xff08;Composite Pattern&#xff09;概述 定义&#xff1a;组合模式是一种结构型设计模式&#xff0c;它允许你将对象组合成…...

IntelliJ IDEA Docker集成

一、概述 Docker是一种用于在隔离和可复制环境中部署和运行可执行文件的工具。这可能很有用&#xff0c;例如&#xff0c;在与生产相同的环境中测试代码。 IntelliJ IDEA集成了Docker功能&#xff0c;并为创建Docker映像、运行Docker容器、管理Docker Compose应用程序、使用公…...

【Blender】【源码详解】BLI_mesh_boolean 实现详解

1. 背景&#xff1a; 最近因为项目需要&#xff0c;需要阅读 Blender 中关于 mesh boolean 的源码&#xff1b;因此&#xff0c;对 blender 中的 mesh boolean 源码进行解读&#xff1b; Github 上源码下载很慢&#xff0c;一般使用 Gitee: gitee Blender 源码 2. Mesh Boole…...

36. Three.js案例-创建带光照和阴影的球体与平面

36. Three.js案例-创建带光照和阴影的球体与平面 实现效果 知识点 Three.js基础 WebGLRenderer WebGLRenderer 是Three.js中最常用的渲染器&#xff0c;用于将场景渲染到网页上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobject可选参数&#…...

C语言 函数嵌套

#include <stdio.h> void new_line() {printf("hehe\n"); } void three_line() {int i 0;for (i 0; i < 3; i){new_line;} } int main() {three_line();return 0; } 函数可以嵌套调用&#xff0c;但不能嵌套定义 链式访问 main有三个参数 //main函数的…...

Android adb查看某个进程的总线程数

Android adb查看某个进程的总线程数 adb shell 进入控制台&#xff0c;然后&#xff1a; top -m 20 列出当前系统的进程&#xff0c;找到目标进程的id&#xff0c; ps -T 进程id | wc -l Android adb shell ps进程查找以及kill-CSDN博客文章浏览阅读777次&#xff0c;点赞3次&a…...

安装milvus以及向量库增删改操作

首先电脑已经安装了docker windows电脑可下载yml文件 https://github.com/milvus-io/milvus/releases/download/v2.4.6/milvus-standalone-docker-compose.yml 创建milvus文件夹&#xff0c;并在这个目录下创建五个文件夹&#xff1a;conf、db、logs、pic、volumes、wal 然后…...

基于深度学习多图像融合的屏幕缺陷检测方案

公司项目&#xff0c;已申请专利。 深度学习作为新兴技术在图像领域蓬勃发展&#xff0c;因其自主学习图像数据特征的性能避免了人工设计算法的繁琐&#xff0c;精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能&#xff0c;使得深度学习技术在…...

OAuth 2.0

简介 OAuth 是一种开放标准的授权协议或框架&#xff0c;它提供了一种安全的方式&#xff0c;使第三方应用程序能够访问用户在其他服务上的受保护资源&#xff0c;而无需共享用户的凭证&#xff08;如用户名和密码&#xff09;。OAuth 的核心思想是通过“授权令牌”来代替直接…...

2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题

2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题&#xff08;选择题&#xff09; 题目总数&#xff1a;5 总分数&#xff1a;50 选择题 第 1 题 单选题 Scratch运行以下程宇后&#xff0c;小兔子会&#xff08; &#xff09;。 A. 变小 B. 变大 C. 变色 D. …...

pat乙级1072 开学寄语

下图是上海某校的新学期开学寄语&#xff1a;天将降大任于斯人也&#xff0c;必先删其微博&#xff0c;卸其 QQ&#xff0c;封其电脑&#xff0c;夺其手机&#xff0c;收其 ipad&#xff0c;断其 wifi&#xff0c;使其百无聊赖&#xff0c;然后&#xff0c;净面、理发、整衣&am…...

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号&#xff0c;比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍&#xff0c;本文介绍下面三种. 2. 调用函数产生信号 2.1 k…...

Qwen2.5-7B 微调rz吧数据集

Qwen2.5-7B 微调弱智吧数据集 模型微调简介 模型微调是一种在已有预训练模型的基础上&#xff0c;通过使用特定任务的数据集进行进一步训练的技术。这种方法允许模型在保持其在大规模数据集上学到的通用知识的同时&#xff0c;适应特定任务的细微差别。使用微调模型&#xff…...

未来将要被淘汰的编程语言

COBOL - 这是一种非常古老的语言&#xff0c;主要用于大型企业系统和政府机构。随着老一代IT工作人员的退休&#xff0c;COBOL程序员变得越来越少。Fortran - 最初用于科学和工程计算&#xff0c;Fortran在特定领域仍然有其应用&#xff0c;但随着更现代的语言&#xff08;如Py…...

翻转(蓝桥杯2023大学C组试题E)

【问题描述】&#xff1a;小蓝用黑白棋的n个棋子排成了一行&#xff0c;他在脑海里想象出了一个长度为n的01串T&#xff0c;他发现如果把黑棋当作1、白棋当做0&#xff0c;这一行棋子是一个长度为n的01串S。 小蓝如果在S中发现一颗棋子和它两边的棋子都不一样&#xff0c;可以将…...

期权VIX指数构建与择时应用

芝加哥期权交易 所CBOE的波动率指数VIX 是反映 S&P 500 指数未来 30 天预测期波动率的指标&#xff0c;由于预期波动率多用于表征市场情绪&#xff0c;因此 VIX 也被称为“ 恐慌指数”。 VIX指数计算 VIX 反映了市场情绪和投资者的风险偏好&#xff0c; 对于欧美市场而言…...

Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; 服务器IP DNS F5配置 OHS1 172.xx.xx.xx ohs01.xxxxxx.com ohs.xxxxxx.com OHS2 172.xx.xx.xx ohs02.xxxxxx.com 服务器用户角色信息均为&#xff1a;…...

torch.unsqueeze:灵活调整张量维度的利器

在深度学习框架PyTorch中&#xff0c;张量&#xff08;Tensor&#xff09;是最基本的数据结构&#xff0c;它类似于NumPy中的数组&#xff0c;但可以在GPU上运行。在日常的深度学习编程中&#xff0c;我们经常需要调整张量的维度以适应不同的操作和层。torch.unsqueeze函数就是…...

为什么使用环形队列

1.看以下两种情况。第一种不会出现问题&#xff0c;当主流程读取次数比较慢时&#xff0c;数据会被覆盖。 2.扩大空间。不可取。 3.什么是队列...

Qt之QML应用程序开发:给应用程序添加图标文件

开发环境: 1、Qt Creator 14.0.1 2、windows10 先看下面的步骤,不明白再返回来看下面官方指导链接。 先看下面的步骤,不明白再返回来看下面官方指导链接。 先看下面的步骤,不明白再返回来看下面官方指导链接。 --------------------------------------------------------…...

基于xiaothink对Wanyv-50M模型进行c-eval评估

使用pypi安装xiaothink&#xff1a; pip install xiaothink1.0.2下载模型&#xff1a; 万语-50M 开始评估(修改模型路径后即可直接开始运行&#xff0c;结果保存在output文件夹里)&#xff1a; import os import json import pandas as pd import re from tqdm import tqdm i…...

大模型项目如何成功落地?

随着人工智能的快速发展&#xff0c;大模型已经成为企业转型和提升效率的关键工具。要让大模型成功落地&#xff0c;需要几个关键要素&#xff0c;以及明白如何组建一个高效的团队。 首先&#xff0c;成功的关键在于业务人员的积极参与&#xff0c;这是项目成功的起点。 其次…...

重构(二)

继续"提高代码质量" 接着上文提高代码质量, 需要从这几个特点入手 1、代码重用性。2、可读性。3、可扩展性。4、可靠性。5、高内聚&#xff0c;低耦合。 仅仅就"可读性"去分析一下吧, 毕竟例子实在是太多了 递归的"可读性"不如while循环 递归…...

Sapro编程软件

Sapro软件是由西门子建筑科技公司开发的一款编程软件&#xff0c;主要用于Climatix控制器的编程、调试及相关功能实现.以下是其具体介绍&#xff1a; • 功能强大&#xff1a;可进行HVAC控制编程&#xff0c;实现设备控制、HMI用户访问和设备集成等功能&#xff0c;满足复杂的…...

EasyGBS国标GB28181公网平台P2P远程访问故障诊断:云端服务端排查指南

随着信息技术的飞速发展&#xff0c;视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。EasyGBS平台&#xff0c;作为基于国标GB28181协议的视频流媒体平台&#xff0c;为用户提供了强大的视频监控直播功能。然而&#xff0c;在实际应用中&#xff0c;P2P远程访问可…...

学生管理系统,增加教师管理,班级管理,角色功能权限管理

为了在现有的学生管理系统中增加**教师管理**、**班级管理**以及**角色和权限管理**&#xff0c;我们需要对数据库进行扩展&#xff0c;并相应地更新 Python 代码和用户界面。以下是详细的步骤和代码示例。 ## 1. 数据库扩展 ### 1.1 创建新表 #### 教师表 (teachers) sql …...

Vue CLI 脚手架创建项目流程详解 (2)

更新 CLI 脚手架 确保你安装的是最新版本的 Vue CLI&#xff0c;以支持最新的特性及改进。你可以通过以下命令全局安装或更新 Vue CLI&#xff1a; npm install -g vue/cli创建 Vue 3.x 项目 启动创建向导 使用 vue create 命令来开始创建一个新的 Vue 项目&#xff1a; vue …...

LabVIEW机械故障诊断中的传感器选择

在机械设备故障诊断中&#xff0c;传感器是关键设备&#xff0c;用于采集设备运行状态的各种数据。常见的传感器类型和选择方法如下&#xff1a; 1. 振动传感器 用于检测设备运行中的振动特征&#xff0c;常见于旋转机械和轴承故障诊断。 加速度传感器&#xff1a;检测高频振…...

二叉树_堆

目录 一. 树(非线性结构&#xff09; 1.1 树的概念与结构 1.2 树的表示 二. 二叉树 2.1 二叉树的概念与结构 2.2 特殊的二叉树 2.3 二叉树的存储结构 三. 实现顺序结构的二叉树 3.1 堆的概念与结构 一. 树(非线性结构&#xff09; 1.1 树的概念与结构 概念&#xff…...

Java图片拼接

最近遇到一个挺离谱的功能&#xff0c;某个表单只让上传一张图&#xff0c;多图上传会使导出失败。跟开发沟通后表示&#xff0c;这个问题处理不了。我... 遂自己思考&#xff0c;能否以曲线救国的方式拯救一下&#xff0c;即不伤及代码之根本&#xff0c;又能解决燃眉之急。灵…...

使用qemu搭建armv7嵌入式开发环境

目录 目录 1 概述 2 环境准备 2.1 vexpress系列开发板介绍 2.2 安装工具 2.2.1 安装交叉工具链 2.2.2 安装qemu 2.2.3 安装其他工具 3 启动uboot 3.1 uboot下载与编译 3.1.1 下载 3.1.2 编译 3.2 使用qemu启动uboot 4 启动kernel 4.1 下载和编译kernel 4.1.1 下…...

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…...

Hashtable 描述及源码解析

目录 一、Hashtable的基本概念 二、Hashtable的源码解析 构造函数 哈希算法函数 处理哈希冲突 类定义和成员变量 构造方法 插入元素 查找元素 删除元素 扩容 Hashtable&#xff08;哈希表&#xff09;是一种非常重要的数据结构&#xff0c;它提供了快速的数据插入、删…...

clickhouse-数据库引擎

1、数据库引擎和表引擎 数据库引擎默认是Ordinary&#xff0c;在这种数据库下面的表可以是任意类型引擎。 生产环境中常用的表引擎是MergeTree系列&#xff0c;也是官方主推的引擎。 MergeTree是基础引擎&#xff0c;有主键索引、数据分区、数据副本、数据采样、删除和修改等功…...

深度学习之超分辨率算法——SRCNN

网络为基础卷积层 tensorflow 1.14 scipy 1.2.1 numpy 1.16 大概意思就是针对数据&#xff0c;我们先把图片按缩小因子照整数倍进行缩减为小图片&#xff0c;再针对小图片进行插值算法&#xff0c;获得还原后的低分辨率的图片作为标签。 main.py 配置文件 from model im…...

本机如何连接虚拟机MYSQL

要让本机&#xff08;主机&#xff09;连接到虚拟机上的 MySQL 数据库&#xff0c;你需要确保虚拟机和主机之间的网络连接正常&#xff0c;并且 MySQL 配置允许外部连接。以下是实现本机连接虚拟机 MySQL 的步骤&#xff1a; 步骤 1&#xff1a;确认虚拟机与本机的网络连接 确…...

mac 安装graalvm

Download GraalVM 上面链接选择jdk的版本 以及系统的环境下载graalvm的tar包 解压tar包 tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz 移入java的文件夹目录 sudo mv graalvm-jdk-<version> /Library/Java/JavaVirtualMachines 设置环境变…...

大模型日报 2024-12-19

大模型日报 2024-12-19 大模型资讯 标题&#xff1a;OpenAI发布季第十天&#xff1a;ChatGPT登陆电话、WhatsApp&#xff0c;你可以给ChatGPT真正打电话了 摘要&#xff1a;OpenAI于2024年12月18日发布了ChatGPT的新功能&#xff0c;用户可以通过电话和WhatsApp与ChatGPT进行互…...

【数据结构练习题】链表与LinkedList

顺序表与链表LinkedList 选择题链表面试题1. 删除链表中等于给定值 val 的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。4. 输入一个链表&#xff0c;输出该链…...