去掉检测指针有效范围的宏定义
This commit is contained in:
parent
2d0e4def19
commit
078da19f55
|
@ -389,7 +389,7 @@ const Config& Config::CreateRAM()
|
||||||
ConfigBase::ConfigBase()
|
ConfigBase::ConfigBase()
|
||||||
: Cfg(*Config::Current)
|
: Cfg(*Config::Current)
|
||||||
{
|
{
|
||||||
assert_ptr(&Cfg);
|
assert(&Cfg, "Cfg");
|
||||||
|
|
||||||
New = true;
|
New = true;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ Stream::Stream(const Buffer& bs)
|
||||||
|
|
||||||
void Stream::Init(void* buf, uint len)
|
void Stream::Init(void* buf, uint len)
|
||||||
{
|
{
|
||||||
assert_ptr(buf);
|
assert(buf, "buf");
|
||||||
|
|
||||||
_Buffer = (byte*)buf;
|
_Buffer = (byte*)buf;
|
||||||
_Capacity = len;
|
_Capacity = len;
|
||||||
|
@ -338,7 +338,6 @@ MemoryStream::MemoryStream(void* buf, uint len) : Stream(buf, len)
|
||||||
// 销毁数据流
|
// 销毁数据流
|
||||||
MemoryStream::~MemoryStream()
|
MemoryStream::~MemoryStream()
|
||||||
{
|
{
|
||||||
assert_ptr(this);
|
|
||||||
if(_needFree)
|
if(_needFree)
|
||||||
{
|
{
|
||||||
if(_Buffer != _Arr) delete[] _Buffer;
|
if(_Buffer != _Arr) delete[] _Buffer;
|
||||||
|
|
|
@ -18,8 +18,8 @@ extern "C"
|
||||||
|
|
||||||
#if defined(DEBUG) && defined(USE_FULL_ASSERT)
|
#if defined(DEBUG) && defined(USE_FULL_ASSERT)
|
||||||
|
|
||||||
#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
|
//#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
|
||||||
bool assert_ptr_(const void* p);
|
//bool assert_ptr_(const void* p);
|
||||||
|
|
||||||
void assert_failed2(const char* msg, const char* file, unsigned int line);
|
void assert_failed2(const char* msg, const char* file, unsigned int line);
|
||||||
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))
|
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))
|
||||||
|
|
|
@ -75,7 +75,7 @@ ShunCom::ShunCom()
|
||||||
|
|
||||||
void ShunCom::Init(ITransport* port, Pin rst)
|
void ShunCom::Init(ITransport* port, Pin rst)
|
||||||
{
|
{
|
||||||
assert_ptr(port);
|
assert(port, "port");
|
||||||
|
|
||||||
Set(port);
|
Set(port);
|
||||||
//MaxSize = 82;
|
//MaxSize = 82;
|
||||||
|
|
|
@ -354,7 +354,7 @@ void W5500::Init()
|
||||||
// 初始化
|
// 初始化
|
||||||
void W5500::Init(Spi* spi, Pin irq, Pin rst)
|
void W5500::Init(Spi* spi, Pin irq, Pin rst)
|
||||||
{
|
{
|
||||||
assert_ptr(spi);
|
assert(spi, "spi");
|
||||||
|
|
||||||
debug_printf("\r\n");
|
debug_printf("\r\n");
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,8 @@ extern "C"
|
||||||
// 验证确保对象不为空,并且在有效的内存范围内
|
// 验证确保对象不为空,并且在有效的内存范围内
|
||||||
//extern void assert_failed(uint8_t* file, uint32_t line);
|
//extern void assert_failed(uint8_t* file, uint32_t line);
|
||||||
|
|
||||||
#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
|
//#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
|
||||||
bool assert_ptr_(const void* p);
|
//bool assert_ptr_(const void* p);
|
||||||
|
|
||||||
void assert_failed2(cstring msg, cstring file, unsigned int line);
|
void assert_failed2(cstring msg, cstring file, unsigned int line);
|
||||||
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))
|
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))
|
||||||
|
|
|
@ -114,8 +114,6 @@ void* operator new[](uint size)
|
||||||
|
|
||||||
void operator delete(void* p) noexcept
|
void operator delete(void* p) noexcept
|
||||||
{
|
{
|
||||||
assert_ptr(p);
|
|
||||||
|
|
||||||
mem_printf(" delete 0x%p ", p);
|
mem_printf(" delete 0x%p ", p);
|
||||||
if(p)
|
if(p)
|
||||||
{
|
{
|
||||||
|
@ -126,8 +124,6 @@ void operator delete(void* p) noexcept
|
||||||
|
|
||||||
void operator delete[](void* p) noexcept
|
void operator delete[](void* p) noexcept
|
||||||
{
|
{
|
||||||
assert_ptr(p);
|
|
||||||
|
|
||||||
mem_printf(" delete[] 0x%p ", p);
|
mem_printf(" delete[] 0x%p ", p);
|
||||||
if(p)
|
if(p)
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,9 +58,6 @@ uint Controller::Dispatch(ITransport* port, Buffer& bs, void* param, void* param
|
||||||
byte* buf = bs.GetBuffer();
|
byte* buf = bs.GetBuffer();
|
||||||
uint len = bs.Length();
|
uint len = bs.Length();
|
||||||
|
|
||||||
assert_ptr(buf);
|
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto control = (Controller*)param;
|
auto control = (Controller*)param;
|
||||||
|
|
||||||
#if MSG_DEBUG
|
#if MSG_DEBUG
|
||||||
|
@ -91,7 +88,6 @@ uint Controller::Dispatch(ITransport* port, Buffer& bs, void* param, void* param
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(control, "控制器指针已被改变3");
|
assert(control, "控制器指针已被改变3");
|
||||||
assert_ptr(control);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -16,7 +16,6 @@ bool Modbus::Read(Stream& ms)
|
||||||
if(ms.Remain() < 4) return false;
|
if(ms.Remain() < 4) return false;
|
||||||
|
|
||||||
byte* buf = ms.Current();
|
byte* buf = ms.Current();
|
||||||
assert_ptr(buf);
|
|
||||||
uint p = ms.Position();
|
uint p = ms.Position();
|
||||||
|
|
||||||
Address = ms.ReadByte();
|
Address = ms.ReadByte();
|
||||||
|
|
|
@ -15,9 +15,7 @@ Slave::~Slave()
|
||||||
|
|
||||||
void Slave::OnReceive(ITransport* transport, byte* buf, uint len, void* param)
|
void Slave::OnReceive(ITransport* transport, byte* buf, uint len, void* param)
|
||||||
{
|
{
|
||||||
assert_ptr(param);
|
auto slave = (Slave*)param;
|
||||||
|
|
||||||
Slave* slave = (Slave*)param;
|
|
||||||
|
|
||||||
Stream ms(buf, len);
|
Stream ms(buf, len);
|
||||||
Modbus entity;
|
Modbus entity;
|
||||||
|
|
|
@ -26,9 +26,6 @@ ITransport::~ITransport()
|
||||||
// 打开传输口
|
// 打开传输口
|
||||||
bool ITransport::Open()
|
bool ITransport::Open()
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
if(Opened || Opening) return true;
|
if(Opened || Opening) return true;
|
||||||
|
|
||||||
Opening = true;
|
Opening = true;
|
||||||
|
@ -43,9 +40,6 @@ bool ITransport::Open()
|
||||||
// 关闭传输口
|
// 关闭传输口
|
||||||
void ITransport::Close()
|
void ITransport::Close()
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
if(!Opened || Opening) return;
|
if(!Opened || Opening) return;
|
||||||
|
|
||||||
Opening = true;
|
Opening = true;
|
||||||
|
@ -57,9 +51,6 @@ void ITransport::Close()
|
||||||
// 发送数据
|
// 发送数据
|
||||||
bool ITransport::Write(const Buffer& bs)
|
bool ITransport::Write(const Buffer& bs)
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
if(!Opened && !Open()) return false;
|
if(!Opened && !Open()) return false;
|
||||||
|
|
||||||
return OnWrite(bs);
|
return OnWrite(bs);
|
||||||
|
@ -68,9 +59,6 @@ bool ITransport::Write(const Buffer& bs)
|
||||||
// 发送数据
|
// 发送数据
|
||||||
bool ITransport::Write(const Buffer& bs, const void* opt)
|
bool ITransport::Write(const Buffer& bs, const void* opt)
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
if(!Opened && !Open()) return false;
|
if(!Opened && !Open()) return false;
|
||||||
|
|
||||||
return OnWriteEx(bs, opt);
|
return OnWriteEx(bs, opt);
|
||||||
|
@ -79,9 +67,6 @@ bool ITransport::Write(const Buffer& bs, const void* opt)
|
||||||
// 接收数据
|
// 接收数据
|
||||||
uint ITransport::Read(Buffer& bs)
|
uint ITransport::Read(Buffer& bs)
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
if(!Opened && !Open()) return 0;
|
if(!Opened && !Open()) return 0;
|
||||||
|
|
||||||
return OnRead(bs);
|
return OnRead(bs);
|
||||||
|
@ -98,9 +83,6 @@ uint ITransport::Read(Buffer& bs)
|
||||||
// 注册回调函数
|
// 注册回调函数
|
||||||
void ITransport::Register(TransportHandler handler, void* param)
|
void ITransport::Register(TransportHandler handler, void* param)
|
||||||
{
|
{
|
||||||
// 特别是接口要检查this指针
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
_handler = handler;
|
_handler = handler;
|
||||||
_param = param;
|
_param = param;
|
||||||
}
|
}
|
||||||
|
@ -149,8 +131,6 @@ uint PackPort::OnRead(Buffer& bs) { return Port->Read(bs); }
|
||||||
|
|
||||||
uint PackPort::OnPortReceive(ITransport* sender, Buffer& bs, void* param, void* param2)
|
uint PackPort::OnPortReceive(ITransport* sender, Buffer& bs, void* param, void* param2)
|
||||||
{
|
{
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto pp = dynamic_cast<PackPort*>((PackPort*)param);
|
auto pp = dynamic_cast<PackPort*>((PackPort*)param);
|
||||||
return pp->OnReceive(bs, param2);
|
return pp->OnReceive(bs, param2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,6 @@ Zigbee::Zigbee(ITransport* port, Pin rst)
|
||||||
|
|
||||||
void Zigbee::Init(ITransport* port, Pin rst)
|
void Zigbee::Init(ITransport* port, Pin rst)
|
||||||
{
|
{
|
||||||
assert_ptr(port);
|
|
||||||
|
|
||||||
Set(port);
|
Set(port);
|
||||||
MaxSize = 64;
|
MaxSize = 64;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ void assert_failed(uint8_t* file, unsigned int line)
|
||||||
TInterrupt::Halt();
|
TInterrupt::Halt();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool assert_ptr_(const void* p)
|
/*bool assert_ptr_(const void* p)
|
||||||
{
|
{
|
||||||
if((uint)p < FLASH_BASE)
|
if((uint)p < FLASH_BASE)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ bool assert_ptr_(const void* p)
|
||||||
//if(p <= (void*)&__heap_base) return false;
|
//if(p <= (void*)&__heap_base) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,8 +53,7 @@ bool OpenLed(Message& msg, void* param)
|
||||||
// 发送刷小灯的消息
|
// 发送刷小灯的消息
|
||||||
void FlashLed(void* param)
|
void FlashLed(void* param)
|
||||||
{
|
{
|
||||||
assert_ptr(param);
|
auto control = (Controller*)param;
|
||||||
Controller* control = (Controller*)param;
|
|
||||||
|
|
||||||
// 发送广播消息,刷所有人小灯
|
// 发送广播消息,刷所有人小灯
|
||||||
TinyMessage msg(0x10);
|
TinyMessage msg(0x10);
|
||||||
|
|
|
@ -110,9 +110,6 @@ bool IcmpSocket::Process(IP_HEADER& ip, Stream& ms)
|
||||||
// Ping目的地址,附带a~z重复的负载数据
|
// Ping目的地址,附带a~z重复的负载数据
|
||||||
bool IcmpSocket::Ping(IPAddress& ip, uint payloadLength)
|
bool IcmpSocket::Ping(IPAddress& ip, uint payloadLength)
|
||||||
{
|
{
|
||||||
assert(this, "非法调用Icmp");
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
byte buf[sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_HEADER) + 64];
|
byte buf[sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_HEADER) + 64];
|
||||||
// 注意,此时指针位于0,而内容长度为缓冲区长度
|
// 注意,此时指针位于0,而内容长度为缓冲区长度
|
||||||
Stream ms(buf, ArrayLength(buf));
|
Stream ms(buf, ArrayLength(buf));
|
||||||
|
|
|
@ -288,8 +288,7 @@ bool TinyIP::SendIP(IP_TYPE type, const IPAddress& remote, const byte* buf, uint
|
||||||
ip->Checksum = 0;
|
ip->Checksum = 0;
|
||||||
ip->Checksum = _REV16(CheckSum(nullptr, (byte*)ip, sizeof(IP_HEADER), 0));
|
ip->Checksum = _REV16(CheckSum(nullptr, (byte*)ip, sizeof(IP_HEADER), 0));
|
||||||
|
|
||||||
assert_ptr(Arp);
|
auto arp = (ArpSocket*)Arp;
|
||||||
ArpSocket* arp = (ArpSocket*)Arp;
|
|
||||||
MacAddress mac;
|
MacAddress mac;
|
||||||
if(!arp->Resolve(remote, mac))
|
if(!arp->Resolve(remote, mac))
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,8 +17,6 @@ static void TinyClientTask(void* param);
|
||||||
|
|
||||||
TinyClient::TinyClient(TinyController* control)
|
TinyClient::TinyClient(TinyController* control)
|
||||||
{
|
{
|
||||||
assert_ptr(control);
|
|
||||||
|
|
||||||
Control = control;
|
Control = control;
|
||||||
Control->GetKey = Delegate2<byte, Buffer&>(&TinyClient::GetDeviceKey, this);
|
Control->GetKey = Delegate2<byte, Buffer&>(&TinyClient::GetDeviceKey, this);
|
||||||
|
|
||||||
|
@ -266,8 +264,6 @@ void TinyClient::ReportAsync(uint offset,uint length)
|
||||||
|
|
||||||
void TinyClientTask(void* param)
|
void TinyClientTask(void* param)
|
||||||
{
|
{
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto client = (TinyClient*)param;
|
auto client = (TinyClient*)param;
|
||||||
uint offset = client->NextReport;
|
uint offset = client->NextReport;
|
||||||
uint len = client->ReportLength;
|
uint len = client->ReportLength;
|
||||||
|
|
|
@ -521,8 +521,6 @@ bool TinyController::Post(const TinyMessage& msg, int msTimeout)
|
||||||
|
|
||||||
void SendTask(void* param)
|
void SendTask(void* param)
|
||||||
{
|
{
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto control = (TinyController*)param;
|
auto control = (TinyController*)param;
|
||||||
control->Loop();
|
control->Loop();
|
||||||
}
|
}
|
||||||
|
@ -631,14 +629,6 @@ void TinyController::Loop()
|
||||||
if(count == 0) Sys.SetTask(_taskID, false);
|
if(count == 0) Sys.SetTask(_taskID, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void StatTask(void* param)
|
|
||||||
{
|
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto control = (TinyController*)param;
|
|
||||||
control->ShowStat();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// 显示统计信息
|
// 显示统计信息
|
||||||
void TinyController::ShowStat() const
|
void TinyController::ShowStat() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -158,8 +158,6 @@ uint TinyMessage::MaxDataSize() const
|
||||||
void TinyMessage::Show() const
|
void TinyMessage::Show() const
|
||||||
{
|
{
|
||||||
#if MSG_DEBUG
|
#if MSG_DEBUG
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
byte flag = *((byte*)&_Code + 1);
|
byte flag = *((byte*)&_Code + 1);
|
||||||
msg_printf("0x%02X => 0x%02X Code=0x%02X Flag=0x%02X Seq=0x%02X Retry=%d", Src, Dest, Code, flag, Seq, Retry);
|
msg_printf("0x%02X => 0x%02X Code=0x%02X Flag=0x%02X Seq=0x%02X Retry=%d", Src, Dest, Code, flag, Seq, Retry);
|
||||||
|
|
||||||
|
@ -174,7 +172,6 @@ void TinyMessage::Show() const
|
||||||
ushort len = Length;
|
ushort len = Length;
|
||||||
if(len > 0)
|
if(len > 0)
|
||||||
{
|
{
|
||||||
assert_ptr(Data);
|
|
||||||
msg_printf(" Data[%02d]=", len);
|
msg_printf(" Data[%02d]=", len);
|
||||||
ByteArray(Data, len).Show();
|
ByteArray(Data, len).Show();
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,15 +50,6 @@ bool TinyServer::Send(Message& msg) const
|
||||||
return Control->Send(msg);
|
return Control->Send(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*bool OnServerReceived(void* sender, Message& msg, void* param)
|
|
||||||
{
|
|
||||||
auto server = (TinyServer*)param;
|
|
||||||
assert_ptr(server);
|
|
||||||
|
|
||||||
// 消息转发
|
|
||||||
return server->OnReceive((TinyMessage&)msg);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// 常用系统级消息
|
// 常用系统级消息
|
||||||
|
|
||||||
void TinyServer::Start()
|
void TinyServer::Start()
|
||||||
|
|
|
@ -218,7 +218,6 @@ void TokenClient::LoopTask()
|
||||||
void BroadcastHelloTask(void* param)
|
void BroadcastHelloTask(void* param)
|
||||||
{
|
{
|
||||||
TS("TokenClient::BroadcastHello");
|
TS("TokenClient::BroadcastHello");
|
||||||
assert_ptr(param);
|
|
||||||
|
|
||||||
auto client = (TokenClient*)param;
|
auto client = (TokenClient*)param;
|
||||||
client->SayHello(true);
|
client->SayHello(true);
|
||||||
|
|
|
@ -569,7 +569,6 @@ void TokenStat::Clear()
|
||||||
String& TokenStat::ToStr(String& str) const
|
String& TokenStat::ToStr(String& str) const
|
||||||
{
|
{
|
||||||
TS("TokenStat::ToStr");
|
TS("TokenStat::ToStr");
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
/*debug_printf("this=0x%08X _Last=0x%08X _Total=0x%08X ", this, _Last, _Total);
|
/*debug_printf("this=0x%08X _Last=0x%08X _Total=0x%08X ", this, _Last, _Total);
|
||||||
Percent().Show(true);*/
|
Percent().Show(true);*/
|
||||||
|
|
|
@ -23,7 +23,6 @@ bool TokenMessage::Read(Stream& ms)
|
||||||
{
|
{
|
||||||
TS("TokenMessage::Read");
|
TS("TokenMessage::Read");
|
||||||
|
|
||||||
assert_ptr(this);
|
|
||||||
if(ms.Remain() < MinSize) return false;
|
if(ms.Remain() < MinSize) return false;
|
||||||
|
|
||||||
byte temp = ms.ReadByte();
|
byte temp = ms.ReadByte();
|
||||||
|
@ -60,7 +59,6 @@ void TokenMessage::Write(Stream& ms) const
|
||||||
{
|
{
|
||||||
TS("TokenMessage::Write");
|
TS("TokenMessage::Write");
|
||||||
|
|
||||||
assert_ptr(this);
|
|
||||||
byte tmp = Code | (Reply << 7);
|
byte tmp = Code | (Reply << 7);
|
||||||
if((!Reply && OneWay) || (Reply && Error)) tmp |= (1 << 6);
|
if((!Reply && OneWay) || (Reply && Error)) tmp |= (1 << 6);
|
||||||
ms.Write(tmp);
|
ms.Write(tmp);
|
||||||
|
@ -102,8 +100,6 @@ void TokenMessage::Show() const
|
||||||
#if MSG_DEBUG
|
#if MSG_DEBUG
|
||||||
TS("TokenMessage::Show");
|
TS("TokenMessage::Show");
|
||||||
|
|
||||||
assert_ptr(this);
|
|
||||||
|
|
||||||
byte code = Code;
|
byte code = Code;
|
||||||
if(Reply) code |= 0x80;
|
if(Reply) code |= 0x80;
|
||||||
if((!Reply && OneWay) || (Reply && Error)) code |= (1 << 6);
|
if((!Reply && OneWay) || (Reply && Error)) code |= (1 << 6);
|
||||||
|
@ -128,7 +124,6 @@ void TokenMessage::Show() const
|
||||||
ushort len = Length;
|
ushort len = Length;
|
||||||
if(len > 0)
|
if(len > 0)
|
||||||
{
|
{
|
||||||
assert_ptr(Data);
|
|
||||||
debug_printf(" Data[%d]=",len);
|
debug_printf(" Data[%d]=",len);
|
||||||
// 大于32字节时,反正都要换行显示,干脆一开始就换行,让它对齐
|
// 大于32字节时,反正都要换行显示,干脆一开始就换行,让它对齐
|
||||||
//if(len > 32) debug_printf("\r\n");
|
//if(len > 32) debug_printf("\r\n");
|
||||||
|
|
|
@ -17,18 +17,13 @@ public:
|
||||||
// 为某个指针封装
|
// 为某个指针封装
|
||||||
SmartPtr::SmartPtr(void* ptr)
|
SmartPtr::SmartPtr(void* ptr)
|
||||||
{
|
{
|
||||||
assert_ptr(ptr);
|
|
||||||
|
|
||||||
_ptr = new WrapPtr(ptr);
|
_ptr = new WrapPtr(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拷贝智能指针。仅拷贝内部包装,然后引用计数加一
|
// 拷贝智能指针。仅拷贝内部包装,然后引用计数加一
|
||||||
SmartPtr::SmartPtr(const SmartPtr& ptr)
|
SmartPtr::SmartPtr(const SmartPtr& ptr)
|
||||||
{
|
{
|
||||||
assert_ptr(ptr._ptr);
|
|
||||||
|
|
||||||
auto p = (WrapPtr*)ptr._ptr;
|
auto p = (WrapPtr*)ptr._ptr;
|
||||||
assert_ptr(p->Ptr);
|
|
||||||
|
|
||||||
_ptr = p;
|
_ptr = p;
|
||||||
p->Count++;
|
p->Count++;
|
||||||
|
|
Loading…
Reference in New Issue