所以这是我的代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
#define MAX 5
#define STR_LENGTH 40
void main()
{
char *p_str[MAX];
for (int i = 0; i < MAX; i++)
{
*(p_str+i) = new char(STR_LENGTH);
cout << "Please enter a string: ";
cin >> *(p_str+i);
}
for (int i = 0; i < MAX; i++)
{
cout << *(p_str+i) << endl;
delete (p_str+i);
}
}
那里的最后一行,我有删除,但是当它到达那里时它会中断,有什么想法可以解决吗?
答案 0 :(得分:8)
new char(STR_LENGTH)
没有按照您的想法行事。它为单个char分配内存,初始化为STR_LENGTH
的值。如上所述,您有缓冲区溢出。设为new char[STR_LENGTH]
。
现在您要分配一个数组,您应该使用delete [] (p_str+i);
或更简洁,delete [] p_str[i];