【linux】c++ 内存管理(二)
3. 指针与数组的比较
不同点:
数组:要么在惊天存储区域被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命周期内保持不变,只有数组的内容可以改变。
指针:可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。
两者特征比较的例子:
(1) 修改内容:
char a[] = “hello”;
a[0] = ‘x’ ; // ok
char *p = “hello”; //注意p指向常量字符串
p[0] = ‘x’; //错误。编译器不能发现该错误
指针p指向常量字符串”hello”(位于静态存储区,内容为hello),常量字符串的内容是不可以被改变的。企图修改常量字符串的内容而导致运行错误。
(2) 内容复制与比较
不能对数组名进行直接复制与比较,数组间复制应该使用标准函数strcpy进行复制。同理,比较b和a的内容是否相同,不能使用if( b == a )来判断,应该使用标准库函数strcmp进行比较。
语句p = a并不能将数组a的内容复制给指针p,而是把a的地址赋给了p,要想复制a的内容,可以先用库函数malloc为p申请一块容量为strlen(a) + 1 个字符的内存,再用strcpy进行字符串复制。同理,if( p == a) 比较的不是内容而是地址,应该用库函数strcmp比较。
// 数组
char a[] = “hello”;
char b[10];
strcpy( b, a); //不能用if( b == a)
…….
// 指针
int len = strlen(a);
char *p = (char *)malloc( sizeof(char) * ( len + 1) );
strcpy( p, a); // 不能用 p = a;
if( strcmp( p, a ) == 0 ) // 不能用if( p == a )
…….
(3) 计算内存容量
用运算符 sizeof 可以计算出数组的容量(字节数)。
下例中,sizeof (a)的值是12(注意别忘记了’’)。指针p指向a,但是sizeof(p)的值却是4(32位计算机),这是因为sizeof(p)得到的是一个指针变量的字节数,相当于sizeof(char *),而不是p所指的内存容量。
&nbs
相关文档:
zz linux yum安装mysql后要注意的一些初始化问题
我的服务器装的是centos 5.3,由于最开始安装做了详细的记录,所以整个过程也是轻车熟路,一路yum下来,就搞定了,然后就是数据库、网站的搬家,轻松搞定~
可是今天在家看了下公司的网站,问题出来了~ 有些产品点击查看详细信息的时候,找不到网页~经过一番思考,发现是mysql ......
安装环境:VMware Workstation 5.5.0 build-18463
Linux版本:Red Hat Enterprise Linux AS (2.6.9-42.EL)
软件版本:MySQL5 - mysql-5.0.37.tar.gz
Apache2 - httpd-2.2.4.tar.gz
PHP5 - php-5.2.1.tar.gz
(将以上文件保存至/home/tmp目录)
[MySQL]
# cd /home/tmp (进入压缩包 ......
信号本质
信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。
信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程 ......
Linux 内核简介
现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。
图 2. GNU/Linux 操作系统的基本体系结构
系统调用接口(SCI)的方法
实际上,体系结构可能并不像图 2 所示的一样清晰。例如,处理系统调用(从用户空间切换到内核空 ......
在Linux下面去压缩文件或者目录。我们将学习zip, tar, tar.gz和tar.bz2等压缩格式的基本用法。
zip格式已成为压缩文件的标准选择,而且它在windows上也能使用。
经常用zip格式压缩那些需要共享给windows用户的文件。
如果只是共享给linux用户或者Mac用户,偏向于选择tar.gz格式。
ZIP
zip可能是目前使用得最多的文档压 ......