这是什么错误?
int main() {
int* pointer = new int [1000];
if (!pointer) return -1;
for (int j = 0; j < 1000; j++)
*pointer++ = j;
If (pointer) {
delete [] pointer;
pointer = NULL;
}
return 0;
}
答案 0 :(得分:0)
在声明中
static String reverseWords(String sentence) {
StringBuilder newSentence = new StringBuilder();
try {
String line = null;
BufferedReader reader = new BufferedReader(new StringReader(sentence));
while ((line = reader.readLine()) != null){
String[] words = line.split(" ");
newSentence.append(reverseCharacters(words[0]));
for(int i = 1; i < words.length; i++){
String reversed = reverseCharacters(words[i]);
newSentence.append(" ").append(reversed);
}
newSentence.append("\n");
}
} catch(IOException e){
e.printStackTrace();
}
if (!sentence.endsWith("\n"))
newSentence.deleteCharAt(newSentence.length() - 1);
return newSentence.toString();
}
*pointer++ = j;
被移到分配的内存中的下一个位置。 [后递增运算符将操作数的值增加pointer
,但表达式的值是递增操作之前操作数的原始值]
在1
循环之后,for
指向一个比分配的数组内存更远的内存,这里
pointer
您的程序正在尝试delete [] pointer;
不拥有的内存。
要解决此问题,在将元素插入数组时,请使用一个临时指针
delete