c++ - 如何使用指针从函数传递对象在堆上的地址

标签 c++ pointers

我试图在堆上创建一个对象,然后从调用函数传回它的地址,但我无法让它工作!

如果这个函数是从 main 调用的,为什么我不能将对象的地址存储在一个新的指针中?

Feline newFeline(int height, int weight) {
  Feline *myFeline = new Feline(height, weight);
  return *myFeline;
}

int main()
{
  Feline *f2;
  *f2 = newFeline(10, 100);
  //cout << f2->getHeight() << endl;
  return 0;
}

当我运行它时,出现总线错误:10。哦,我确实喜欢猫。

最佳答案

更改函数的签名以返回指针,并按值返回指针

Feline* newFeline(int height, int weight)
{
  Feline *myFeline = new Feline(height, weight);
  return myFeline;
}

如当前所写,您按值返回一个Feline,然后立即泄漏您用new分配的Feline

关于c++ - 如何使用指针从函数传递对象在堆上的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32300106/

相关文章:

android - fatal error : fitz. h:muPDF 库中没有这样的文件或目录

c++ - 我应该写 `0x0` 还是 `0` 而不是 NULL?

c++ - 有没有办法用C++制作一个运行在Java手机上的程序?

C++编程,迭代器是一个指针,即使它没有被声明为指针

c - 跟踪重新分配的 n 个结构体数组中指向结构体 i 的指针?

c++ - 为什么 make_unique 有一个可以将 std::bind 作为参数的构造函数的额外移动?

c - 指向结构的指针

C : mark the every struct, union ,数组元素

c# - 解释这个 C# 代码 : byte* p = (byte*) (void*) Scan0;

c++ - 如何将元素添加到排序列表中......? (C++)