天天看点

debug, release strlen与sizeof

1, c/c++

如果是字符数组没有赋初值,则debug和release版的strlen(str)结果是不一样的.

sizeof怎样都是分配的那样。

#include <iostream>

using namespace std;

void main()
{
	char str[10];

	cout << str << endl;
	cout << "len is " << strlen(str) << endl;
	cout << "len is " << sizeof(str) << endl;

	getchar();
}           
debug, release strlen与sizeof
debug, release strlen与sizeof

为了debug和release的结果一样最后定义完变量就初始化,不然可能程序出错了很难找到那里有问题。

关于strlen和sizeof的详细资料看微软的官方文档

MSDN: strlen,  sizeof

strlen

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

2,  sizeof与strlen的区别