计算机常用知识

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.指针的大小--sizeof问题

指针的大小是问:一个指针变量占用多少内存空间?

分析:既然指针只是要存储另一个变量的地址,注意:是存放一变量的地址,而不是存放一个变量本身,所以,不管指针指向什么类型的变量,它的大小总是固定的:只要能放得下一个地址就行!

存放一个地址需要几个字节?答案是和一个int 类型的大小相同:4字节。

所以,若有:(1)int* pInt; (2)char* pChar; (3)bool* pBool; (4)float* pFloat; (5)double* pDouble;

则: sizeof(pInt)、sizeof(pChar)、sizeof(pBool)、sizeof(pFloat)、sizeof(pDouble)的值全部为:4。

二.sizeof和strlen的区别

❀第一个例子:

char* ss = "0123456789";

1、sizeof(ss)的结果是4,ss是指向字符串常量的字符指针

2、sizeof(*ss)的结果是1,*ss是第一个字符

❀第二个例子:

char ss[] = "01233456789";

1、sizeof(ss)结果是11,ss是数组,计算到'\0'的位置,因此是10+1

2、sizeof(*ss)结果是1,*ss是第一个字符

❀第三个例子

char ss[100] = "0123456789";

1、sizeof(ss)的结果是100,ss表示在内存中预分配的大小:100*1

2、strlen(ss)的结果是10,它的内部实现是用一个循环计算字符串的长度,直到'\0'为止。

❀第四个例子

int ss[100] = "0123456789";

1、sizeof(ss)的结果是400,ss表示在内存中的大小,为100*4

2、strlen(ss)错误,strlen的参数只能是char*,且必须是以'\0'结尾的。

三.几种进程间的通信方式

# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

# 有名管道(named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进

程内不同线程之间的同步手段。

# 消息队列( message queue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

# 信号( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

# 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

# 套接字( socket ) :套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

四.测试产品和测试项目有什么区别

1.产品测试的目的如下:

A.发现现有产品的缺点

B.根据产品中的功能点评价商业前景.

C.评价其他相关产品.

D.发现产品对各个细分市场的吸引力

E.获得营销计划其他元素的创意

总之:产品测试与消费者有密切的关系

产品测试注重功能的正确、稳定、功能扩展,兼容等要求比项目严格。产品的case重复利用率比较高,特别对于回归测试,及后期的维护修改测试。

2.而项目测试针对的只是局部客户

相比与产品,项目好像是为具体的某个客户量身定制的,按客户的标准测就行了,项目测试的要求比产品要低点,因为未发掘的错误可以拿回继续修改或到客户那里现场修改。

就产品测试而言,所有基于项目测试的方法和流程都是可以用的,只是由于产品开发和测试的特殊性,要求对于产品的测试必须要全面:用户想的到的要测到,用户想不到的也要测。

项目测试注重功能的正确,业务流程的,对用户经常操作的模块进行重点测试,很少用到的模块进行基本测试就行。

它们的比较:

1.时间进度。项目对时间进度的要求,要比产品要严格

2、测试环境。项目的测试环境非常确定,但产品经常是要在各种承诺支持的软、硬件环境下进行测试

3、自动化测试。在产品测试中对测试工作进行自动化很有价值,但项目测试一般没有太大必要

4、测试类型。项目的测试类型一般会比产品测试少,比如安装、卸载测试经常是不需要的

五.单元测试:

1.测试驱动:驱动被测试模块正常运行起来的实体

2.测试桩:代替被测模块调用的子模块的实体,该实体一般为桩函数。

六.浅谈C/C++内存泄漏及其检测工具

内存泄漏的定义:

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new 等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

七.软件测试的策略和方法

1.软件测试按使用的测试技术不同可以将测试分为静态测试和动态测试。

相关文档
最新文档