原文地址: http://www.cocos2dev.com/?p=281注:自己以前也写过cocos2d-x如何优化内存的使用,以及内存不足的情况下怎么处理游戏。今天在微博中看到有朋友介绍了下内存,挺详细的。不知道是谁写的,我记录下。一,IOS与图片内存在IOS上,图片会被自动缩放到2的N次方大小。比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的。图片占用内存大小的计算的公式是;长*宽*4。这样一张512*512 占用的内存就是 512*512*4 = 1M。其他尺寸以此类推。(ps:IOS上支持的最大尺寸为2048*2048)。二,cocos2d-x 的图 Read More
long int strtol(const char *nptr, char **endptr, int base);strtol是atoi的增强版,参数base范围从2至36,或0。参数base代表采用的进制方式,0/10是十进制1. endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。例如char *pos; strtol("123abc", &pos, 10);strtol返回123,pos指向字符串中的字母a。2. 如果字符串开头没有可识别的整数,例如char *pos; strtol("ABCabc", &pos Read More
区分成员函数重载、覆盖(重写)和隐藏的不同含义,禁止用隐藏方式定义非virtual成员函数成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 Read More
函数参数是以数据结构:栈的形式存取,从右至左入栈.1. va_list用于声明一个变量,我们知道函数的可变参数列表其实就是一个字符串,所以va_list才被声明为字符型指针,这个类型用于声明一个指向参数列表的字符型指针变量,例如:va_list ap; //ap:arguement pointer2. va_start(ap,v),它的第一个参数是指向可变参数字符串的变量,第二个参数是可变参数函数的第一个参数,通常用于指定可变参数列表中参数的个数。3. va_arg(ap,t),它的第一个参数指向可变参数字符串的变量,第二个参数是可变参数的类型。4. va_end(ap) 用于将存放可变参数字 Read More
一. 内存分配方式有三种: 1. 从静态存储区域分配: 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。2. 在栈上创建: 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 这个大小在linux上可以使用:ulimit -a | grep stack 来查看3. 从堆上分配: 亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我 Read More
// sort algorithm example#include <iostream> // std::cout#include <algorithm> // std::sort#include <vector> // std::vectorbool myfunction (int i,int j) { return (i<j); }struct myclass{ bool operator() (int i,int j) { return (i<j); }} myobject;int main (){ int myints[] = {32,7 Read More