new分配字符串长度,输出不对。

来源:百度知道 编辑:UC知道 时间:2024/09/25 14:34:37
#include<iostream.h>
#include<string.h>
void main(){
char *t;
for(int i=0;i<100;i++){
t=new char[i];
cout<<i<<" "<<strlen(t)<<endl;
delete t;
}
}
输出:
0 17
1 17
2 17
3 17
4 17
5 17
6 17
7 17
8 17
9 17
10 17
11 17
12 17
13 33
14 33
15 33
16 33
17 33
18 33
19 33
20 33
21 33
22 33
23 33
24 33
25 33
26 33
27 33
28 33
29 33
30 35
31 35
32 37
33 37
34 39
35 39
36 43
37 43
38 43
39 43
40 47
41 47
42 47
43 47
44 49
45 49
46 51
47 51
48 53
49 53
50 55
51 55
52 59
53 59
54 59
55 59
56 63
57 63
58 63
59 63
60 65
61 65
62

申请了内存空间,但是却没有对内存空间进行初始化,所以strlen(t)返回的长度不确定,这取决于内存每个字节的初值,直到碰到'\0'。

#include<iostream.h>
#include<string.h>
void main()
{
char *t;
for(int i=0;i<100;i++)
{
t=new char[i];
// 加上这句, 需要先对buf清零处理
memset(t, 0, i);
cout<<i<<" "<<sizeof(t)<<endl;
delete t;
}
}

不知道你这样做有什么用, 内存分配出来, 没赋值你计算什么长度啊?
内存的长度是不能计算的

c++ new分配字符串问题? 用C实现任意长度字符串的倒序输出 写一函数,求一个字符串的长度,要求在main函数中输入字符串,并输出其长度 写一函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 写一个函数求一个字符串的长度。在main函数中输入字符串,并输出长度 写出一个函数,求一个字符串的长度,要求在主函数中输入字符串,并输出其长度 输入字符串,输出字符串长度,统计数字、大写字母和小写字母个数。输入非字母和数字的字符则结束 vc++ 如果两个字符串的字符和长度都相等,则输出equal,否则输出unequal,要求用字符指针 输入一个字符串输出字符串长度,求一个3*4的矩阵各列元素的平均值,将原矩阵和求出的平均值全部输出 字符串长度计算规则??