Bor*_*ris 0 c++ delete-operator
所以这是我的代码:
#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);
}
}
Run Code Online (Sandbox Code Playgroud)
在那里的最后一行,我有删除,但它到达那里时,它有什么想法解决它吗?
new char(STR_LENGTH)不会做你认为它做的事情.它为单个char分配内存,初始化为值STR_LENGTH.如上所述,您有缓冲区溢出.做吧new char[STR_LENGTH].
既然你正在分配一个数组,你应该用它来解释它delete [] (p_str+i);,或者更简洁一点,delete [] p_str[i];