C++ 整数内存分配/释放

C++ 整数内存分配/释放,c++,memory,memory-management,allocation,C++,Memory,Memory Management,Allocation,获取以下错误: malloc:**对象0x7ffee85b4338的错误:未分配要释放的指针 我认为我的分配和解除分配是正确的,但我一定没有。我做错了什么?它将编译为零错误和零警告,但不会在释放内存后打印最后一条语句(COMPLETE) 请参阅下面的源代码。感谢您的帮助 #include <iostream> using namespace std; int main(){ int numOne, numTwo, numThree; cout <<

获取以下错误:

malloc:**对象0x7ffee85b4338的错误:未分配要释放的指针

我认为我的分配和解除分配是正确的,但我一定没有。我做错了什么?它将编译为零错误和零警告,但不会在释放内存后打印最后一条语句(COMPLETE)

请参阅下面的源代码。感谢您的帮助

#include <iostream>
using namespace std;

int main(){

    int numOne, numTwo, numThree;

    cout << "When prompted please enter a whole number." << endl;

    //obtain user input for numbers and store to integer variables
    cout << "\nEnter a number: ";
        cin >> numOne;
    cout << "Enter another number: ";
        cin >> numTwo;
    cout << "Enter a third number: ";
        cin >> numThree;

    //print out user's entered numbers as stored in variables
    cout<< "\nThe numbers you entered currently stored as variables are: ";
    cout << numOne << ", " << numTwo << " and " << numThree << endl;

    //create pointers and allocate memory
    int* pointerOne   = new int;
    int* pointerTwo   = new int;
    int* pointerThree = new int;

    //store location of variables to pointers
    pointerOne   = &numOne;
    pointerTwo   = &numTwo;
    pointerThree = &numThree;

    //print out user's entered numbers as stored in pointers
    cout<< "The numbers you entered currently stored as pointers are: ";
    cout << *pointerOne << ", " << *pointerTwo << " and " << *pointerThree << endl;


    //alter user's numbers to show that pointers alter variables
    cout << "\nNOTICE: Incrementing entered values by one! ";
        *pointerOne   = *pointerOne + 1;
        *pointerTwo   = *pointerTwo + 1;
        *pointerThree = *pointerThree + 1;
    cout << "....COMPLETE!" << endl;

    //print out user's entered numbers as stored in variables
        cout<< "\nThe numbers you entered incremented by one shown using variables:  ";
        cout << numOne << ", " << numTwo << " and " << numThree << endl;

    //deallocate memory
    cout << "\nWARNING: Deallocating pointer memory! ";
        delete pointerOne;
        delete pointerTwo;
        delete pointerThree;
    cout << "....COMPLETE!" << endl;

}
#包括
使用名称空间std;
int main(){
内努蒙、努姆托、努姆特里;
不能数二;
cout>numThree;
//打印出存储在变量中的用户输入的数字

cout您可以将用户的输入存储到指针变量中,并为其分配内存,然后使用指针操作其值:

int *numOne, *numTwo, *numThree;
numOne = new int;
numTwo = new int;
numThree = new int;

int *pointerOne, *pointerTwo, *pointerThree;
pointerOne = numOne;
pointerTwo = numTwo;
pointerThree = numThree;

cout << "\nEnter a number: ";
cin >> *numOne; // You can use cin >> *pointerOne;
cout << "Enter another number: ";
cin >> *numTwo; // You can use cin >> *pointerTwo;
cout << "Enter a third number: ";
cin >> *numThree; // You can use cin >> *pointerThree;

cout << "\nNOTICE: Incrementing entered values by one! ";
*pointerOne++;
*pointerTwo++;
*pointerThree++;
cout << "....COMPLETE!" << endl;

delete numOne;
delete numTwo;
delete numThree;
int*numOne、*numTwo、*numThree;
努蒙=新整数;
numTwo=新整数;
numThree=新整数;
int*pointerOne、*pointerTwo、*pointerThree;
点酮=numOne;
指针two=numTwo;
指针三=numThree;
cout>*numOne;//您可以使用cin>>*pointerOne;
cout>*numTwo;//您可以使用cin>>*pointertw;
cout>*numThree;//您可以使用cin>>*pointerThree;

cout
pointerOne=&numOne;
makes
pointerOne
指向
numOne
。它不再指向您以前创建的无名的
new int
。只要不
new
delete
,您的代码就应该很好了。我的项目是使用new和delete操作符来学习管理内存。所以我不是I don’我不确定我需要做什么才能使它正确。我的项目是使用new和delete操作符来学习管理内存。--你学习管理内存的方法是知道何时不使用
new
delete
,而不是以奇怪和迂回的方式使用
new/delete
。@HashimGari你要么想使用
>numXXX
位于堆栈上的局部变量,或者使用指向已分配动态内存的
指针xxx
。如果您写入
pointerOne=new Int;pointerOne=&numOne
您分配了一个
Int
,将其地址存储在指针中,然后用local
numOne
的地址覆盖它。因此您丢失了地址到动态整数并且将来无法删除它=内存泄漏。并且永远不要对未从
new
返回的地址调用
delete
。因此我不确定我需要做什么。我的目标是将整数存储到三个不同的变量中,创建三个指针指向每个值,同时显示变量和指针使用new和delete操作符…谢谢!这是我因为某种原因没有在脑海中点击的。立即创建一个变量并为该变量分配内存!非常感谢!