【问题标题】:free(): invalid pointer error in C++free():C++ 中的无效指针错误
【发布时间】:2017-10-08 04:03:22
【问题描述】:

嘿嘿,所以当我在 linux 服务器中运行/编译我的程序时,我收到了这个错误消息。老实说,我不知道错误是什么。我有大约一个小时的时间来修复我的代码,因此了解我需要更正的内容会很棒。谢谢!

这是我当前的代码:

    #include <iostream>
    #include "Car.h"
    using namespace std;

    void problemOne(int arraySize) {
    int numbers[arraySize];
    cout << "Enter next number" << endl;
    for (int i = 0; i < arraySize; ++i) {
    cin >> numbers[i];
    }
    int *p = numbers;

for (int i = 0; i < arraySize; i++) {
    cout << *p;
    p++;

}

}

for (int i = 0; i < arraySize; i++) {
    cout << "Enter next number" << endl;
    cin >> *numbers;
    numbers++;

}

for (int i = 0; i < arraySize; i++) {
    cout << *numbers;
    numbers++;

}
delete[] numbers;

}

Car *p = new Car[arraySize];

for (int i = 0; i < arraySize; i++) {
    string color;
    string model;
    int mile;
    cout << "enter the model of the car" << " ";
    cin >> model;
    cout << "enter color of the car" << " ";
    cin >> color;
    cout << "enter the mileage of the car" << " ";
    cin >> mile;

    *p = Car(model, color, mile);


}

for (int i = 0; i < arraySize; i++) {
    cout << p->getModel() << " " << p->getColor() << " " << p->getMileage() << endl;
    p++;
    }
   }

  int main(int argc, char* argv[]) {
  problemOne(atoi(argv[1]));
  problemTwo(atoi(argv[2]));
  problemThree(atoi(argv[3]));
  return 0;
 }

【问题讨论】:

    标签: c++ debugging pointers visual-c++ compiler-errors


    【解决方案1】:

    由于您没有从new[] 获得numbers,因此您无法将其传递给delete[]。

    顺便说一句,int numbers[arraySize]; 在编译时未知,arraySize 不是有效的标准 C++,它是一个编译器扩展。所以要小心它的作用和不保证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 2018-09-17
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多