游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2120|回复: 4

谁知道在函数内,返回动态分配内存的指针有问题吗?(C++)

[复制链接]

12

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2006-9-28 02:21:00 | 显示全部楼层 |阅读模式

int*  func()
{
    int*  pp=new  int[10];
    return  pp;
}

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-9-28 07:28:00 | 显示全部楼层

Re:谁知道在函数内,返回动态分配内存的指针有问题吗?

没问题,不过如果这个函数是在DLL里,那就应该写个释放用的函数,而不应该在该DLL以外的地方用delete释放指针.

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2006-9-28 09:03:00 | 显示全部楼层

Re:谁知道在函数内,返回动态分配内存的指针有问题吗?

这样做比较糟糕的地方是,其他程序员光看你的函数声明根本没办法知道这是一个数组。他们很可能用delete而不是delete []操作来释放内存。

比较安全的做法。
#include <vector>
#include <memory>

using namespace std;

auto_ptr< vector< int > > func()
{
  return auto_ptr< vector<int> > (new vector<int> (10));
}

更好的方法是用boost::shared_ptr,请参考boost的文档。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-9-28 10:20:00 | 显示全部楼层

Re:谁知道在函数内,返回动态分配内存的指针有问题吗?

不要跨堆。。。

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-9-28 23:21:00 | 显示全部楼层

Re:谁知道在函数内,返回动态分配内存的指针有问题吗?

没有问题,放心吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 12:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表