C++的char指针长度.

来源:百度知道 编辑:UC知道 时间:2024/05/18 04:53:10
#include<iostream>
using namespace std;
#include<string>
void main()
{
char *lala;
lala=new char[10];
cout<<strlen(lala)<<endl;

}
//请问怎么输出的是15而不是10呢?

申请了10字节内存,但是没有对这些内存进行初始化,这样这些内存的值是随机的,而strlen是取字符串长度,也就是从申请的内存开始处,一直到发现一个内存值为'\0'结束,由于你申请的内存值是随机的,可能都不为0,这样strlen会继续在内存中查找

所以你看到输出15,也可能是其他值

strlen是判断字符串的长度,又不是返回你申请的内存大小。
strlen遇到一个'\0'就认为字符串结束。因为你的内存没有先置零,内存中内容是任意的,所以返回的是任意的值。置零后应该反回0.

因为你这个指针指向堆里面的一块区域,你并没有给它进行任何的赋予值操作,面strlen它并不知道里面到哪里结束,它读的是内存里面原先存着的遗留下来的内容,所以会有这样的现象