排序:
默认
按更新时间
按访问量

VS下如何调试程序

程序崩溃的原因分类函数栈溢出 一个变量未初化、未赋值,就读取它的值。 ( 这属于逻辑问题,往往是粗心大意的导致的 )函数栈溢出 (1)定义了一个体积太大的局部变量 (2)函数嵌套调用,层次过深(如无穷递归)数组越界访问 访问数组元素时,下标越界指针的目标对象不可用 (1)空指针 (2)野指针 指针...

2018-02-25 15:20:58

阅读数:5339

评论数:0

debug和release的区别

Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意...

2018-01-02 20:00:08

阅读数:6478

评论数:0

C++ 堆和栈的区别 内存分配方式理解

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。   堆,就是那些由 new 分配的内存块,他们的释...

2017-11-16 14:38:00

阅读数:194

评论数:0

程序的内存分配之堆和栈的区别

堆栈概述   在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。 要点:  堆,优先队列...

2017-11-16 14:13:22

阅读数:137

评论数:0

c++ assert() 使用方法

ssert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include  void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息...

2017-11-16 13:41:57

阅读数:79

评论数:0

Linux中的shell到底是什么?

【一】 shell的含义: 首先shell的英文含义是“壳”; 它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。 Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这...

2017-11-16 10:53:16

阅读数:149

评论数:0

Linux系统目录结构以及简单说明

Linux系统目录结构以及简单说明  linux目录图: / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2 ...

2017-11-16 10:43:24

阅读数:72

评论数:0

strcmp函数与strcpy函数

(一)strcmp函数            strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是:                    i=strcmp(字符串,字符串);          其中,字符串1、字符串2均可为字符串常量或变量;i   是用于存放比较结果的整型变...

2017-10-09 23:41:45

阅读数:92

评论数:0

const的用法

在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。 在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 thi...

2017-09-25 18:44:51

阅读数:66

评论数:0

数组指针和指针数组的区别

数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; i...

2017-09-23 11:26:35

阅读数:98

评论数:0

关于HTTP协议,一篇就够了

HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查...

2017-08-04 19:59:22

阅读数:348

评论数:0

Linux 通信机制 I/O多路复用之select

select 函数作用: 系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个...

2017-07-31 20:33:58

阅读数:135

评论数:1

-对比线程安全和可重入函数

线程安全 一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。反之,如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。所以,有这么四类函数称为线程不安全的: 1、不保护共享变...

2017-06-10 15:18:23

阅读数:232

评论数:0

Linux 中的信号

1、基本概念  软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。  收 到信号的...

2017-06-04 11:09:50

阅读数:128

评论数:0

数据结构――堆的基本概念及其操作

在我刚听到堆这个名词的时候,我认为它是一堆东西的集合...       但其实吧它是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在   O(1)~O(logn)之间。       可谓是相当的引领时尚潮流啊(我不信学信息学的你看到log和1...

2017-05-03 20:50:24

阅读数:322

评论数:0

linux中fork()函数详解

一、fork入门知识      一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。     一个进程调用fork()函数后,系统先给新的进程...

2017-05-02 22:52:30

阅读数:222

评论数:0

Linux系统结构详细解读

我以下图为基础,说明Linux的架构(architecture)。(该图参考《Advanced Programming in Unix Environment》) 最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。硬件...

2017-04-22 10:34:12

阅读数:620

评论数:0

g++与gcc的区别

一:gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目...

2017-04-08 10:45:37

阅读数:228

评论数:0

二叉树的线索化详解

首先,什么是二叉树的线索化,为什么要对二叉树线索化? 二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用...

2017-04-07 10:25:21

阅读数:460

评论数:0

C++ 详解深贝与浅拷贝

当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数: (1)一个对象以值传递的方式传入函数体  (2)一个对象以值传递的方式从函数返回  (3)一个对象需要通过另外...

2017-04-07 09:49:15

阅读数:121

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭