请问我在一个函数里new 了个变量,然后没有delete 那么是否会造成内存泄漏???(50分)

  • 主题发起人 主题发起人 葬月
  • 开始时间 开始时间

葬月

Unregistered / Unconfirmed
GUEST, unregistred user!
我在函数体里
TMemoryStream *m=new TMemoryStream();
但是这个函数返回的是 TMemoryStream;
也就是说最后我要 return m;
所以我无法在return 之前delete m;
请问是否会内存泄漏??如何解决??
 
应该声明一个全局变量,这样,还可以多次使用,记得在每次使用之前要清空,代码如下:
//===========================================================================
//Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
TMemoryStream* m;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//===========================================================================
//Unit1.cpp
//===========================================================================
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
m = new TMemoryStream();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete m;
}
//---------------------------------------------------------------------------
//===========================================================================
BTW:你最近提的一些问题,我也看过了,由于对COM并不熟悉,所以没敢轻言。你可以把具体问题提得
细一些,尤其是你要达到什么目的说出来,我或许能帮一点忙
 
谢谢你
最近我想用C++Builder做三层数据库
但是我现在放弃了 用CB做数据库太会出问题了
我只不过想用CB的OleFunction上传数据 可是…………
放弃了,,放弃了,,,而且外面没有公司用C++Builder的
 
//最近我想用C++Builder做三层数据库
我也在做. 差不多上線用了
//但是我现在放弃了 用CB做数据库太会出问题了
不知你說的問題是 ...?
放弃了,,放弃了,,,而且外面没有公司用C++Builder
用這個的公司好多. 在珠三角東莞一帶.
 

Similar threads

后退
顶部