相关疑难解决方法(0)

退出C应用程序时,是否自动释放了malloc-ed内存?

假设我有以下C代码:

int main () {
  int *p = malloc(10 * sizeof *p);
  *p = 42;
  return 0;  //Exiting without freeing the allocated memory
}
Run Code Online (Sandbox Code Playgroud)

当我编译并执行该C程序时,即在内存中分配一些空间之后,在我退出应用程序并且进程终止后,我分配的内存是否仍会被分配(即基本上占用空间)?

c memory-management

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

处理C++/C结构内存释放

使用后我必须释放结构内存吗?我有示例代码:

struct aa 
{
int a;
char * b ;
    aa()
    {
    a=0;
    b= new char[255];
    }
} ;


aa *ss = new aa[3];

void fill()
{
    aa * ssss = new aa;
    aa * sss = new aa;

    sss->a=10;
    ss[0] = *sss;
    cout<<ss[0].a<<"\n";
    ss[1] = *sss;

    cout<<ss[1].a<<"\n";
    cout<<ssss[1].a<<"\n";
}

int _tmain(int argc, _TCHAR* argv[])
{


    fill();
    delete(ss);
}
Run Code Online (Sandbox Code Playgroud)

我必须delete(ssss)在结束时做fill什么?

我必须删除ss结尾的数组main吗?

我必须创建destruct或构造释放*b内存的ss吗?

类是什么,它是相同的逻辑?

c c++

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

C++指向类

我现在正在阅读一本C++书籍,我对指向课程感到有些困惑.

本书前面的例子以这种方式使用了类和方法:

Calculator myCalc;
myCalc.launch();

while( myCalc.run() ){
    myCalc.readInput();
    myCalc.writeOutput();
}
Run Code Online (Sandbox Code Playgroud)

但是,现在改为这样做:

Calculator* myCalc = new Calculator;
myCalc -> launch();

while( myCalc -> run() ){
    myCalc -> readInput();
    myCalc -> writeOutput();
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法在那里找到解释,为什么它这样做.

为什么我要以这种方式指向一个类,而不是使用标准的方式呢?

有什么不同?哪种情况会更好?

谢谢.

c++ methods pointers class operators

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

标签 统计

c ×2

c++ ×2

class ×1

memory-management ×1

methods ×1

operators ×1

pointers ×1