char*的初始化

    技术2022-05-20  52

    void CharDifference() { char * a = new char; char * b = new char[50]; cout << strlen(a)<<'/n'; cout << strlen(b)<<'/n'; for(int i=0;i<70;i++) { a[i]='a'; b[i]='b'; } cout << strlen(a)<<'/n'; cout << strlen(b)<<'/n'; a[70] = 0; b[70] = 0; cout << strlen(a)<<'/n'; cout << strlen(b)<<'/n'; cout << a<<'/n'; cout << b<<'/n'; }  

    以上code是随性写来主要是测试new char和new char[]之间的区别,其实区别就是new char就是直接分配16个字节的空间给a指针,

    new char[50]就是分配64个字节给b指针,因为16*3<50<16*4,所以是64个字节。

    接下去各输出了strlen,就可以发现一个是16,一个是64的长度。

    下面用了70次循环,当然70次循环意味着即使分配了64个字节也是不够用的,也会超长,超长之后发生的问题是侵犯到了其他的内存地址中去了,从中可以看出c++还是挺危险的,自己瞎写可能会让程序崩溃,只是一些数字或者字符也算了,顶多就点乱码,如果是binary的信息的话,少了一点整个文件就废了。


    最新回复(0)