makedge
函数中的内存分配类型是什么?
#include<iostream>
#include<stdio.h>
using namespace std;
struct edge
{
int a;
int b;
edge(int a, int b)
{
this->a=a;
this->b=b;
}
};
edge makedge(int a, int b)
{
return edge(a, b);
}
int main(void)
{
edge e=makedge(5 , 6);
printf("%d %d\n", e.a, e.b);
}
当我尝试使用delete(&e)
释放内存时。错误是
Error : double free or corruption (out): 0x00007fff6aee5d30 ***
在geeksforgeeks在线编译器中。
答案 0 :(得分:1)
您的计划中没有动态分配。
您的所有对象都有自动存储时间。
因此,delete
或free
他们非常糟糕。
因此出现错误信息。
return edge(a, b);
这里你返回了一个临时,一个没有名字的对象......但它没有动态分配。
与以下内容完全不同:
edge myObject(a, b);
return myObject;