Igo*_*gor 1 c++ memory allocation
这个程序有什么问题?
#include<iostream>
using namespace std;
void main()
{
    int n = 5;
    char* p = new char [n];
    int i;
    for(i=0;i<n;i++)
    {
        p[i] = 'A'+i;
    }
    cout<<p<<endl;
}
为什么我得到"ABCDExxxx"而不是"ABCDE"?内存分配有什么问题?
除了永远不会释放内存之外,内存分配没有任何问题.delete [] p;在main返回之前不要忘记.
输出的问题是p指向的字符串没有终止'\0'.一般情况下,你应该为一个数组分配一个空间,至少比你要放入数组的字符多一个,'\0'然后在最后一个之后放一个数组.当然,更好的解决方案是使用std::string,它会为您完成所有这些.