小编Sat*_*bir的帖子

删除[]是否等于删除?

IP_ADAPTER_INFO *ptr=new IP_ADAPTER_INFO[100];
Run Code Online (Sandbox Code Playgroud)

如果我免费使用

delete ptr;
Run Code Online (Sandbox Code Playgroud)

它会导致内存泄漏,如果不是那么为什么?

这是VS2005生成的反汇编代码

; delete ptr;
0041351D  mov         eax,dword ptr [ptr] 
00413520  mov         dword ptr [ebp-0ECh],eax 
00413526  mov         ecx,dword ptr [ebp-0ECh] 
0041352C  push        ecx  
0041352D  call        operator delete (4111DBh) 
00413532  add         esp,4 

; delete []ptr;
00413535  mov         eax,dword ptr [ptr] 
00413538  mov         dword ptr [ebp-0E0h],eax 
0041353E  mov         ecx,dword ptr [ebp-0E0h] 
00413544  push        ecx  
00413545  call        operator delete[] (4111E5h) 
0041354A  add         esp,4 
Run Code Online (Sandbox Code Playgroud)

c++ memory-management pod

44
推荐指数
5
解决办法
1万
查看次数

如何在崩溃时为我的进程创建minidump?

我无法通过更改系统设置来创建我的流程的minidump.所以我的问题是:

  • 当系统崩溃时,系统是否会为用户进程创建一个minidump

    如果是,我需要配置哪个设置

  • 或者我必须以编程方式创建minidump.

  • 在调查崩溃时小型泵的效果如何

我使用的是Windows XP,C++,VC6

c++ windows debugging minidump

31
推荐指数
4
解决办法
4万
查看次数

Java程序会崩溃吗?

我是一名c ++程序员,我对Java知之甚少.我知道java程序员不必像C++一样直接使用内存.我也知道C++应用程序中的大多数崩溃都是由于内存损坏造成的.

因为与内存相关的问题,用Java编写的应用程序是否会崩溃?

谢谢

c++ java crash

26
推荐指数
3
解决办法
3680
查看次数

堆腐败:原因是什么?

我正在调查由于堆损坏导致的崩溃.由于这个问题非常重要并涉及分析堆栈和转储结果,因此我决定对与崩溃相关的文件进行代码审查.

坦率地说,我没有深入了解何时堆可能被破坏.

如果你能提出可能导致堆损坏的情况,我将不胜感激.

平台:Windows XP

语言:C++

编译器:VC6

c++ memory-management

19
推荐指数
4
解决办法
4万
查看次数

哪个是最新的C++标准版,我可以从哪里下载

可能重复:
我在哪里可以找到当前的{X}标准?

我有一个简单的问题 !

我正在寻找最新C++标准版的软拷贝.我有ISO/IEC 14882第一版,1998-09-01,但我怀疑它是否是最新的.

我访问了http://www.open-std.org/jtc1/sc22/wg21/,有很多草稿.

请指导哪一个是最新的,我应该参考.

c++

11
推荐指数
1
解决办法
2751
查看次数

在std :: set中擦除()之后的迭代器有效性

在std :: set中擦除调用使invalidate iterator?正如我在最后一行5号以下所做的那样..?如果是,什么是从集合中删除所有元素的更好方法

class classA
{
public:
    classA(){};
    ~classA(){};
};
struct structB
{
};

typedef std::set <classA*, structB> SETTYPE;        
typedef std::map <int, SETTYPE>MAPTYPE;

int __cdecl wmain (int argc, wchar_t* pArgs[])
{
    MAPTYPE mapObj; 
    /*
      ...
      ..   Some Operation Here
      ...
      */
    for (MAPTYPE::iterator itr1=mapObj.begin(); itr1!=mapObj.end(); itr1++) 
    {       
        SETTYPE li=(*itr1).second;
        for (SETTYPE::iterator itr2=li.begin();itr2!=li.end();itr2++) 
        {
            classA *lt=(classA*)(*itr2);
            li.erase(itr2); 
            delete lt; // Does it invalidate Iterator ?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl set

10
推荐指数
3
解决办法
2万
查看次数

为什么我能够使用无效的类指针进行函数调用

在下面的代码片段中,虽然指针未初始化,但仍然可以成功调用

temp *ptr;
ptr->func2();
Run Code Online (Sandbox Code Playgroud)

是由于C++语言属性,还是VC++ 6编译器是犯规的?

class temp {
public:
    temp():a(9){}
    int& func1()
    {
        return a;
    }
    bool func2(int arg)
    {
        if(arg%2==0)
            return true;
        return false;
    }
    int a;
};

int main(int argc, char **argv)
{
    temp *ptr;
    int a;
    cin>>a;
    if(ptr->func2(a))
    {
        cout<<"Good poniner"<<endl;
    }
    ptr->func1(); // Does not crash here
    int crashere=ptr->func1();// But does crash here 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers function

6
推荐指数
2
解决办法
687
查看次数

在c ++中删除&new

这可能是一个非常简单的问题,但请帮助我.

我想知道当我调用new和delete时会发生什么,例如在下面的代码中

char * ptr=new char [10];

delete [] ptr;
Run Code Online (Sandbox Code Playgroud)

调用new返回我的内存地址.它是否在堆上分配了精确的10个字节,其中存储了有关大小的信息.当我在同一个指针上调用delete时,我在调试器中看到在10个字节之前和之后有很多字节被更改.

是否有每个新的标头包含有关new分配的字节数的信息.

非常感谢

c++

6
推荐指数
2
解决办法
594
查看次数

线程和流程ID是否独一无二?

我正在使用静态库; 它有一个使用当前时间并创建唯一ID的函数,然后将其插入到我的数据库中.此数字在我的数据库表中应该是唯一的.

有两个并行运行的进程.有时它们会同时调用此函数,并生成相同的数字.发生这种情况时,我会违反完整性.

我想使用进程ID,线程ID和当前时间.这种组合是独特的吗?

平台:Windows XP

c++ windows multithreading

5
推荐指数
3
解决办法
5390
查看次数

DLL的开销

我有一个非常基本的问题.

  1. 当库仅由单个进程使用时.我应该把它作为静态库吗?
  2. 如果我将库用作DLL,但只有一个进程使用它.**开销会是多少?*

c++ windows dll

5
推荐指数
1
解决办法
2528
查看次数