摘要: 利用联合体的特殊存储方式,便能检测出来cpu所使用的事big-endian或者是little-endian的存储方式。1.判断系统是Big liden 或者是little ledin方法1:int check(){ union check { int i; char ch; }c; c.i =1; return (c.ch == 1);}返回值为==1的时候为小端,不等于1的时候为大端联合体中 变量i 和ch共用同一地址空间,它们都是从低地址开始存放。变量i的值为0x00 00 00 01, 如果是小端模式则01在低地址上,ch的值如果为01则是小端模式,否则是大端模式。//在C语言参考手册的 阅读全文
posted @ 2013-07-07 14:48 瀚海一漂一九九一 阅读(447) 评论(0) 推荐(0)
摘要: char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!对于字符串的时候,牵涉到一个指针变量,指针变量中存放的是地址,但是int a=1,当中只牵涉到一个变量,那就是int变量,int变量当中存放的便只有1,但是字符串常量的时候,牵涉到指针变量和字符串存放的内存,设计到两个内存存放。所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率例:char str1[] = " 阅读全文
posted @ 2013-07-07 14:16 瀚海一漂一九九一 阅读(510) 评论(0) 推荐(0)
摘要: 字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char*pstr="helloworld!";这里,"helloworld!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区“分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注 阅读全文
posted @ 2013-07-07 14:15 瀚海一漂一九九一 阅读(712) 评论(0) 推荐(0)
摘要: C++雷区之内存管理 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。常量字符串也是存放在静态存储区。(2)在栈上创建。在执... 阅读全文
posted @ 2013-07-07 14:14 瀚海一漂一九九一 阅读(169) 评论(0) 推荐(0)