需要有关C编​​程的帮助->指针

时间:2018-07-26 02:57:08

标签: c++

  1. 这是什么错误?

    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;
    }
    

1 个答案:

答案 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