C++ 关于delete 和new 函数的问题

2025-01-03 19:38:25
推荐回答(3个)
回答1:

首先你的程序的确存在内存泄漏,因为第一次申请的内存没有被释放。其次用new申请的堆内存的返回值是一个四个字节的指针(因为C++中指针是四个字节),这个指针指向你所申请的内存的首地址,所以不存在空间不够的问题。再次,在执行delete的时候卡,可能是因为你的字符串没有结束符'\n'(因为我没有见到你的程序,所以不太确定)。

回答2:

前面是因为c++的安全保护不是那么的严格,后面的是因为你那个相当于是一个数组,所以应用delete[]释放空间

回答3:

char仅针对字符类型数据,字符串是对象,占用的字节数比存入的字符数多1,因为结尾标记:'\o'占用一位。