![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
逆风飞翔
我是一个简单的人,我喜欢技术,因为它可以让我感觉到成就感、感觉到快乐......
展开
-
new与delete必须成对使用
char *buff = new char[reslen]; char *utfbuff =new char[reslen]; .... .... delete buff; delete utfbuff; 代码如上:后果:这段代码运行没有引发运行时错误,但是本身是存在隐患的,如果后续对*(buff+1)进行了误使用,使用了本应该释放了的内存空间。转载 2012-05-11 15:57:38 · 950 阅读 · 0 评论 -
【编程范式】连续数据的前面部分后移的实现
学习编程范式到第七节课了,直接上代码:// rotate.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "memory.h"#include "string.h"int main(int argc, char* argv[]){ prin原创 2013-07-01 14:49:15 · 1018 阅读 · 0 评论 -
信号量和互斥锁
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访转载 2013-07-17 11:31:40 · 1093 阅读 · 0 评论 -
并发与竞态控制
防止竞态的机制有:semaphore(信号量),spinlock(自旋锁),completion(完成量),原子操作等原子操作的意义:操作的不可分割。1、 什么是并发?1.1多个执行单元同时、并行被执行。1.2竞态:1.2.1并发的执行单元对共享资源的访问则很容易导致竞态。1.2.2 共享资源:硬件资源,软件上的全局变量、静态变量等。2、l转载 2013-07-16 16:05:47 · 918 阅读 · 0 评论 -
semaphore实现浏览器的读写原理
在编程范式中的斯坦福大学的老师说了一个例子:好比世界上就只有一台互联网的服务器,当我们浏览网页的时候,就好比服务器进行了写操作,而浏览器则进行了读操作。我如果用简单的伪代码c++写出来是这个样子的:int main(){ITP(false);ThreadNew("write",write,0);ThreadNew("Reader",reader,0);RunAllThread(原创 2013-07-17 15:19:09 · 1377 阅读 · 0 评论 -
【编程范式】 编译原理相关内存分配
每个寄存器在理论上都可以从RAM读取信息或将信息写入RAM中,ALU算数逻辑单元,它很容易4个字节上进行加法减法移位操作。原创 2013-07-02 14:17:50 · 1282 阅读 · 0 评论 -
编程范式16
生产中-消费者问题char buffer[8];Semaphore emptyBuffers(8);生产中-消费者问题char buffer[8];Semaphore emptyBuffers(8); //设置一个资源信号量empty表示仓库中目前空闲位置的数量Semaphore fullBuffers(0);//设置一个资源信号量full表示仓库中目前满的位置数量int main(){原创 2013-07-19 01:01:33 · 1027 阅读 · 0 评论 -
【编程范式】汇编解释swap方法
先要熟悉一些汇编的基本知识:1.SP是什么?SP是堆栈寄存器,在调用子程序时,都会用到,保存原来程序的环境使用,如各个寄存器的内容,最重要的是,调用返回时程序的运行指令地址,这是由调用时将返回地址压入堆栈,返回时取出并传给PC寄存器来实现的。给SP的初始化值的大小,显示了堆栈的存放位置和堆栈的大小,如果堆栈太小,会出现堆栈溢出的问题。(其内容为栈顶的偏移地址。)2.原创 2013-07-04 12:51:20 · 5785 阅读 · 0 评论 -
Windows XP下MinGW的安装与配置
到http://sourceforge.net/projects/mingw/ 手动去下载最新的MinGW,或使用MinGW-5.1.4.exe,自动下载。但后者往往不能下载到最新的稳定包。 1、手动下载说明,参见:http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite 可从:http://sourcef原创 2013-07-04 14:49:28 · 1874 阅读 · 0 评论 -
【编程范式12】
#define //从usr/bin/include找#define "vector.h" //从当前项目找#ifndof vector.h#define vector.h__________---------------------------------endif.h文件某些定义。gcc 命令:只生成.o文件,链接器生成可执行文件。原创 2013-07-05 11:11:36 · 695 阅读 · 0 评论 -
判断指针是否为空
C++之父的C++圣经《C++程序设计语言 特别版》中说:大家不要听某些人说判断指针是否为空用(p==NULL)或(p!=NULL)的格式,C++之父认为这样写是不好的,提倡直接写(p)或(!p)的形式。 在win32开发中,if ( NULL == p )是极好的写法。但不要写成:if ( p == NULL ) C++之父主要是反对使用“原创 2013-07-13 23:41:56 · 2920 阅读 · 0 评论 -
C++编程范式栈的泛型写法
贴代码:stack.h struct stack{ void * elems; //指向栈中首元素 int logicallen; //当前栈空间中的元素个数 int allocalength;//栈空间的实际大小 int elemSize;//栈中元素占用字节数 void (*freefn)(void *); //函数指针,清除函数指针};原创 2013-06-26 16:35:24 · 1656 阅读 · 0 评论 -
【C++问题总结】尽量减少使用宏,因为即使加了括号也可能会出问题
#include using namespace std;#define SQR(x) ((x) * (x))int main(){ int i=3; cout<<"aaa"<<endl; i=3; cout<<SQR(++i)<<endl; system("pause"); return 1;}Bug分析: 当调原创 2012-05-10 19:03:54 · 891 阅读 · 0 评论 -
Solaris安装GCC以及环境变量的设置
环境变量配置:所以我的环境变量的设置是在/etc/profile中的PATH=/usr/sbin:/usr/bin:/sbin:/usr/ucb:/usr/local/bin:/usr/ccs/binLD_LIBRARY_PATH=/usr/local/lib下载地址:ftp://ftp.twaren.net/Sun/sunfreeware.com/原创 2012-08-21 14:05:46 · 1358 阅读 · 0 评论 -
Solaris 10 下 Samba 的详细配置步骤和常见问题解决
配置samba发现问题如下:在windows 不能进行读写操作,后来发现原来是没有对目录进行chmod 777 /data/build这样在windows访问的时候,就具有了读写权限 /etc/init.d/sambasamba 启动文件原创 2012-08-21 16:33:24 · 987 阅读 · 0 评论 -
#ifndef,#define 用法
文件中的#ifndef头文件中的呃#ifndef,这个是一个很关键的东西,比如你有两个c文件,这两个c文件都include了同一个头文件。而编译时候,这两个c文件要一同编译成可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都房子#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般gesture是这样的。#ifndef原创 2012-08-28 10:31:56 · 2274 阅读 · 0 评论 -
进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。转载 2013-04-24 11:09:12 · 889 阅读 · 0 评论 -
c/c++ 缓冲区溢出
在 C 和 C++ 中,缓冲区通常是使用数组和诸如 malloc() 和 new 这样的内存分配例程来实现的。极其常见的缓冲区种类是简单的字符数组。溢出是指数据被添加到分配给该缓冲区的内存块之外。 在几乎所有计算机语言中,不管是新的语言还是旧的语言,使缓冲区溢出的任何尝试通常都会被该语言本身自动检测并阻止(比如通过引发一个异常或根据需要给缓冲区添加更多空间)。但是有两种语言不是这样:C 和转载 2013-07-08 10:36:26 · 5551 阅读 · 0 评论 -
大小端模式的区别
最近在学习USB,在看Keil C51代码的时候发现从PC机接收的USB数据在Keil C51环境里要交换高低字节,这是因为Keil的数据结构是大端模式,对于大端模式不是很清楚后来网上搜索发现有一篇文章介绍的比较详细,不敢独享贴出来大家学习。 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把转载 2013-07-08 14:55:30 · 1084 阅读 · 0 评论 -
C++编程范式
这篇比较说的是关于c++中的类型转换的东西,重点是与指针有关的类型。1.强制类型转换看一下这个c++ 的代码:int a=0x123456;//0x是16进制的写法char c = (char) a;printf("%d/n",c);编译结果是86指针类型的转换:int a = 0x123456;int *pa原创 2013-06-26 14:38:14 · 1454 阅读 · 0 评论 -
c++ 的编码规范
在公司这么久了,还没有好好学习编码规范,真的很土啊,现在整理一下公司的命名规则:命名规范下面的命名规范仅供参考:A 变量名用大小写间隔单词,不使用下划线,且首字母大写,例如:cfgChn(config Channel)B 局部变量名首字母可以小写,也可全小写,且建议小写,例如:tmpC 涉及到NDT上定义的变量名首字母必须小写(和NDT上的原创 2013-07-24 14:56:20 · 906 阅读 · 0 评论