#include <windows.h> #include <stdio.h> #include <shlwapi.h> #pragma comment(lib,"shlwapi.lib") int myRemoveDirectory(char *szPath) { if(!PathIsDirectory(szPath)) { return GetLastError(); } BOOL bRes = SetCurrentDirectory(szPat…
今天和同事review代码时,发现这样的一段代码: Manager * pManager = new Manager(); if(NULL == pManager) { //记录日志 return false; } 然后,一个同事就说这样写欠妥,应该改为: Manager * pManager = NULL; try { pManager = new Manager(); } catch(std::bad_alloc e) { //... } 我查了一下资料,发现: 1.malloc分配时,如果…
记得早一段时间,看到一本书上写过delete的一个..今天突然找啦一下资料: malloc()是C语言中动态存储管理 的一组标准库函数之中的一个.其作用是在内存的动态存储区中分配一个长度为size的连续空间.其參数是一个无符号整形数,返回值 是一个指向所分配的连续存储域的起始地址的指针. 动态内存分配 就 是指在程序运行的过程中动态地分配或者回收存储空间的分配内存的方法.动态内存分配不像数组等静态内存分配方法那样须要预先分配存储空间,而是由系统依据 程序的须要即时分配,且分配的大小就是程序要求的…
概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 1. 最小重组缓冲区大小: ipv4为576,ipv6为1500. 我的理解:这句"任何实现都必须保证支持的最小数据包大小": 指ip层必须保证能被正确处理,而不会溢出tcp缓冲区; 小于它的包一定能被正确处理,而大于它的包不一定; 由对端决定,若对端不指出MSS设为536(减去头部后). ps: 似乎如今不采用这种策略,而是通过路径MTU决…
malloc()函数分配内存失败的常见原因:  1. 内存不足.  2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏.下次再使用malloc()函数申请内存就会失败,返回空指针NULL(0). malloc中做了哪些事情: 简单的说就是系统中有一个位置标记,标记了 当前已经用掉的内存用到了什么位置,系统中还有一个链表把各个未用的内存块连接起来,申请新内存的时候就未分配的链表中依次查找一个够用的内存块,把这次分配的内存地址返回给用户,把这次用掉的进行映射…
引言 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题.而传统错误处理技术,检查到一个局部无法处理的问题时: 1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯) 2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回NULL指针) 3.返回一个合法值,让程序处于某种非法的状态(最坑爹的东西,有些第三方库真会这样) 4.调用一个预先…
目录 . 引言 . C/C++运行库 . 静态Glibc && 可执行文件 入口/终止函数 . 动态Glibc && 可执行文件 入口/终止函数 . 静态Glibc && 共享库 入口/终止函数 . 动态Glibc && 共享库 入口/终止函数 . 静态库/共享库->编译/使用.动态加载 . 和静态库/动态库相关的辅助工具 1. 引言 0x1: glibc Any Unix-like operating system needs a C…
#转 对C语言输入输出流和缓冲区的深入理解C语言缓冲区(缓存)详解缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 为什么要引入缓冲区比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的…
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4290955.html 第二十一章并发 第一章对象导论 >>>>封装<<<< 被隐藏(也即封装)的部分通常代表对象内部脆弱的部分,它们很容易被程序员所毁坏,因…
CPPUTest 虽然名称上看起来是 C++ 的单元测试框架, 其实它也是支持测试 C 代码的. 本文主要介绍用CPPUTest来测试 C 代码. (C++没用过, 平时主要用的是C) C++相关的内容都省略了. 本文基于 debian v7.6 x86_64. 1. CPPUTest 安装 现在各个Linux的发行版的源都有丰富的软件资源, 而且安装方便. 但是如果想要在第一时间使用最新版本的开源软件, 还是得从源码安装. debian系统为了追求稳定性, apt源中的软件一般都比较旧. 所以…