gpt4 book ai didi

c++ - 内存分配错误 new char [n]

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:26:50 56 4
gpt4 key购买 nike

这个程序有什么问题?

#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”?内存分配有什么问题?

最佳答案

内存分配没有任何问题,只是内存永远不会释放。不要忘记在 main 返回之前 delete [] p;

输出的问题是 p 指向的字符串没有终止符 '\0'。通常,您应该为数组分配至少一个比您要放入该数组的字符更多的空间,并在最后一个字符之后放置一个 '\0'。当然,更好的解决方案是使用 std::string,它会为您处理所有这些事情。

关于c++ - 内存分配错误 new char [n],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674573/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com