class object
{
public:
void check()
{
std::cout<<"I am doing ok..."<<std::endl;
}
};
int main()
{
object *p = new object;
p->check();
delete p;
p->check();
delete p;
p->check();
}
Run Code Online (Sandbox Code Playgroud)
编辑:大师,我很困惑的许多声明"它可能崩溃或可能没有"..为什么没有标准说,这是我们如何处理使用'删除操作符'删除的内存块..?有什么投入?
什么是最好的Opensource FSM编译器可以生成c ++代码?
我们有如下设计,我想获得以下错误场景的意见或协议指南.
Layer1
---------------
| ^ ^
| (1) |(4) |(6)
v | | Remote entity
---------------- ---------------
Layer0-----------------(2)------------------------------->Layer0
Layer0<----------------(3)--------------------------------Layer0
Layer0<----------------(5)--------------------------------Layer0
1. New session request to remote entity.
2. Establish link + data(session request)
3. Link Establishment ongoing
4. Link Establishment pending
5. Link Established + data (session accepted)
6. session accepted.
Run Code Online (Sandbox Code Playgroud)
如果layer1在步骤4和6之间决定它不需要远程实体服务,即接收事件4并且由于某些错误而尚未接收事件6.
1)是否应该等待事件6发生并启动会话释放或
2)Layer1应该指示第0层
立即终止连接建立过程.
哪种方法正确?
(1)的问题是,即使我们知道由于错误我们将要终止会话,我们需要在event6进入之前处理其他事件.
在以下代码中,如果Info::addPart1()
多次意外调用,则会发生内存泄漏:
typedef struct
{
}part1;
typedef struct
{
}part2;
class Info
{
private:
part1* _ptr1;
part2* _ptr2;
public:
Info()
{
_ptr1 = _ptr2 = NULL;
}
~Info()
{
delete _ptr1;
delete _ptr2;
}
addPart1()
{
_ptr1 = new part1;
}
addPart2()
{
_ptr2 = new part2;
}
};
Info _wrapper;
_wrapper.addPart1();
_wrapper.addPart2();
Run Code Online (Sandbox Code Playgroud)
有没有C++成语来处理这个问题?
我可以改写addPart1
并addPart2
喜欢这样来保卫MLK
addPart1()
{
if(_ptr1 != NULL) delete _ptr1;
_ptr1 = new part1;
}
Run Code Online (Sandbox Code Playgroud)
这是一个好的解决方案吗?
我想开发一个应用程序(我更喜欢c ++),它将带有许多嵌套结构的C头文件作为输入,并生成一个html页面,其中数据将呈现为层次结构树结构,可以折叠.
struct level1
{
struct level2
{
struct level3
{
}
}
};
Run Code Online (Sandbox Code Playgroud)
[+] level1
我可以折叠level1如下
[-] level1
[-] level2
[+] level3
Run Code Online (Sandbox Code Playgroud)
它用于学习目的......我不知道从哪里开始.几个指针真的很有帮助.