删除从函数返回的指针?
Posted
技术标签:
【中文标题】删除从函数返回的指针?【英文标题】:Deleting a pointer returned from a function? 【发布时间】:2017-03-25 03:52:47 【问题描述】:我正在为学校编写一个编码作业,要求我们使用数组而不是向量(重点是学习指针和内存管理)。我遇到的问题是我无法删除从函数返回的指针——下面是我所说的一个例子。
int* rndFunc()
int *rndValue = new *int[5];
return rndValue;
int main(void)
int *foo;
foo = rndFunc();
delete[] foo; //this is the issue, I get an invalid pointer error.
【问题讨论】:
函数中的bar
是什么?
我搞砸了我的代码示例 -- bar 应该是 rndValue。
@HighMans 学习复制/粘贴,然后您就不会弄乱您的示例。现在我们怎么能相信你没有搞砸其他事情呢?如果你把其他事情搞砸了,你可能得不到正确的答案,你只会浪费你和其他人的时间。因此,请使用复制/粘贴并确保您所询问的代码正是您正在努力解决的问题。
回到我之前的评论,我没有收到您指出的错误。
【参考方案1】:
有两个错误:
int* rndFunc()
int *rndValue = new int[5]; // instead of int *rndValue = new *int[5];
return rndValue; // Instead of return bar;
【讨论】:
在你的第一个修复之后给了我这个:错误:'*' token int *rndValue = new *int[5]; 这应该可以。我的修复编译得很好。您确定在该行中删除了 int[5] 之前的第二个“*”吗?? 你的错误仍然是:int *rndValue = new *int[5]. int *rndValue = new *int[5] ----> int *rndValue = new int[5] 哦,好吧!我现在明白了。谢谢。以上是关于删除从函数返回的指针?的主要内容,如果未能解决你的问题,请参考以下文章
C语言基础:指针相关概念(指针的算术运算 指针数组指向指针的指针 传递指针给函数 从函数返回指针 )为啥C 语言不支持在调用函数时返回局部变量的地址?