小编War*_*ior的帖子

为什么下面的代码没有崩溃,虽然我删除了对象?

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)

编辑:大师,我很困惑的许多声明"它可能崩溃或可能没有"..为什么没有标准说,这是我们如何处理使用'删除操作符'删除的内存块..?有什么投入?

c++

7
推荐指数
5
解决办法
472
查看次数

有限状态机编译器

什么是最好的Opensource FSM编译器可以生成c ++代码?

c++ compiler-construction state-machine

7
推荐指数
2
解决办法
3886
查看次数

协议开发指南

我们有如下设计,我想获得以下错误场景的意见或协议指南.

   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进入之前处理其他事件.

protocols

3
推荐指数
1
解决办法
480
查看次数

C++成语避免内存泄漏?

在以下代码中,如果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++成语来处理这个问题?

我可以改写addPart1addPart2喜欢这样来保卫MLK

addPart1()
{
  if(_ptr1 != NULL) delete _ptr1;
  _ptr1 = new part1;         
}
Run Code Online (Sandbox Code Playgroud)

这是一个好的解决方案吗?

c++

0
推荐指数
3
解决办法
3188
查看次数

从C结构生成HTML页面

我想开发一个应用程序(我更喜欢c ++),它将带有许多嵌套结构的C头文件作为输入,并生成一个html页面,其中数据将呈现为层次结构树结构,可以折叠.

file.h

struct level1
{
  struct level2
  {
     struct level3
     {

     }
  }
};
Run Code Online (Sandbox Code Playgroud)

file.html

[+] level1

我可以折叠level1如下

[-] level1
    [-] level2
        [+] level3
Run Code Online (Sandbox Code Playgroud)

它用于学习目的......我不知道从哪里开始.几个指针真的很有帮助.

c++

0
推荐指数
1
解决办法
443
查看次数