关闭

有了malloc/free为什么还要new/delete?

有没有这样的疑惑?既然malloc和new都可以正确的申请动态内存,为什么C++要“多次一举”添加了new? new和malloc有什么本质的不同? 首先malloc/free是C++/C语言的标准库 函数,而new/delete是C++的运算符,虽然两者作用相同,但是性质是不同的。对于C++面向对象的特性而言,非内部数据类型的对象,光用malloc/free无法满足动态对象的要求。 对象在...
阅读(237) 评论(0)

指针参数如何传递内存?

当我们需要调用一个申请内存的函数时,大概想的是将函数的参数定义为一个指针来传递内存吧,但是可以用指针去申请动态内存吗?如下函数GetMemory(str,200):void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char)*num); if(p == NULL) return; } void T...
阅读(164) 评论(0)

Linux基本命令(一)——安装与登录

安装与登录命令将介绍: login, shutdown, halt, reboot, install, mount, umount, chsh, exit, lastlogin 1.作用 login的作用是登录系统,使用权限是所有用户。 2.格式 login[name][-p][-h主机名称] 3.主要参数 -p : 通知login保持现在的环境参数。 -h...
阅读(200) 评论(0)

C语言学习笔记(二)

1. 关于数组 下标和数组一起使用,用于标识该集合中某个特定的值; 数组名的值是一个指针常量,也就是数组第一个元素的地址;2. 数组与指针 数组与指针具有一些完全不同的特征。数组具有确定数量的元素,而指针只是一个标量值。只有当数组名在表达式中使用时,编译器才会为他产生一个指针常量。 当数组名作为sizeof操作符或单目操作符&操作数时,指针与数组不同,sizeof返回整个数组...
阅读(163) 评论(0)

C++ 类的6个缺省函数

在C++中默认产生6个类成员函数,即缺省函数,它们分别是: 缺省构造函数 缺省拷贝构造函数 缺省析构函数 缺省赋值运算符 缺省取址运算符 缺省取地址运算符const 很多人以为只有前4个缺省函数,事实上有6个。代码验证如下:#include using namespace std;class A { public: A() { cout<<"构造...
阅读(716) 评论(1)

TCP : 3次握手与4次挥手

TCP协议在运输层工作,当客户端想要连接服务器,TCP协议要求 客户端和服务器共需要3次数据传输,才能确保客户端和服务器已经连通,我们把这个过程称为——3次握手。为什么是3次握手呢?我先来举一个现实中的例子。我给你打电话时,当拨号过去时,相当于我发送了第一次握手,表示我想和你通话。当你提起电话,“喂?”,这是你发送的第二次握手,发送消息给我,表示愿意与我通话,并且你信号正常。我这边再次“喂”,这是我...
阅读(247) 评论(0)

IO多路复用(select poll epoll)

IO多路复用是高性能网络编程一个重要的手段之一。一,IO多路复用的概念 以前我们用多线程来处理并发的请求,现在可以只用单线程来实现。单线程,通过记录跟踪每个每个I/O流(sock)的状态,来达到同时管理多个I/O流的目的,提高了服务器的吞吐能力。 如图所示,IO多路复用,就如同中间的开关,哪个sock就绪就连上开关,达到了单开关处理了多个I/O流的目的。这就是单线程却能处理多个Sock传...
阅读(2789) 评论(0)

高性能网络服务(多进程,多线程,线程池)

Linux的一个应用优势是可用于设计各种高性能网络服务程序,高性能得一个特点就是实现并发访问处理,及服务程序能够同时为多个在线用户提供服务,高性能服务程序得应用非常广泛,在当前流行的Web服务器,各种游戏服务器中都能看到它的身影,本次重点讲解多进程网络服务程序,多线程网络服务程序,以及线程池网络服务程序的实现原理。高性能网络服务程序简介 高性能网络服务程序在当前的LINUX环境下应用非常广泛,...
阅读(973) 评论(0)

套接字—Socket

网络编程就不得不提大名鼎鼎的套接字—Socket一,什么是Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。Socket的英文原意是“插座”,通常称之为套接字,来描述IP地址和端口,是一个通信链的句柄,用来实现不同虚拟机或者计算机之间的通信。 在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个S...
阅读(4799) 评论(0)

网络编程—线程

之前的博客介绍了管道通信,进程间的通信,今天来介绍线程。 介绍线程前先要搞清楚线程与进程的区别。进程可以理解为正在运行的程序,进程管理和调度资源,而线程就是受进程调度的最小单位,也就是说进程给一个或多个线程资源并调度线程的运行。要运用线程,要包含头文件 pthread.h 。线程的属性标识符:pthread_attr_t。 线程的属性结构如下:typedef struct {...
阅读(191) 评论(0)

快速掌握Makefile

要想成为一个”资深”程序员,gcc, gdb, make这三个命令是必须要熟练掌握的。今天介绍Makefile即make操作。一,什么是Makefile make 操作必须先编写Makefile文件。什么是Makefile? 可以将Makefile理解为脚本。这种脚本就是在多文件编译时的一个“自动化编译程序”。在大型工程中,常常成百上千的源文件需要编译链接,我们一个个编译太耗时间,而且当其中一...
阅读(131) 评论(0)

UNIX网络编程之管道与FIFO

管道是最初的Unix IPC形式,它们的最大局限是没有名字,所以,管道只能用于有亲缘关系的进程之间使用。之后,慢慢随着FIFO的加入,这点才有所改观。FIFO也成为有名管道。管道和FIFO的共同点就是它们都是通过read和write函数进行访问的。管道: 管道是由pipe函数创建,提供一个单路数据流。也就是说,所有的管道都是半双工。 管道创建方法: #include i...
阅读(337) 评论(0)

IPC—进程间的通信(信号量,共享内存,消息队列)

IPC是进程间的通信(interprocess communication)的简称。传统上该术语描述的是运行在某个操作系统上的不同的进程间各种消息传递(message passing)。 IPC分为两代,初代System V IPC比较全面,现在用的Posix IPC更加易懂。不管是哪代IPC,重点都是这3点: 1. 信号量 2. 共享内存 3. 消息队列 Linux下命令...
阅读(353) 评论(0)

进程—僵尸进程与孤儿进程

在探讨这个问题之前,我们先来弄清什么是进程。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程是一个具有独立功能的程序关于某个数据集合的一...
阅读(256) 评论(0)

智能指针之 shared_ptr

shared_ptr是一个最像指针的“智能指针”,是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的,Boost库的许多组件–甚至还包括其他一些领域的智能指针都使用了shared_ptr。抱歉,我实在想不出什么更恰当的词汇来形容它在软件开发中的重要性。再强调一遍,shared_ptr非常有价值、非常重要、非常有用。——《Boost程序库完全开发指南》shared_ptr与s...
阅读(676) 评论(0)
32条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:21939次
    • 积分:564
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论