假设我有以下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程序时,即在内存中分配一些空间之后,在我退出应用程序并且进程终止后,我分配的内存是否仍会被分配(即基本上占用空间)?
使用后我必须释放结构内存吗?我有示例代码:
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++书籍,我对指向课程感到有些困惑.
本书前面的例子以这种方式使用了类和方法:
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)
我似乎无法在那里找到解释,为什么它这样做.
为什么我要以这种方式指向一个类,而不是使用标准的方式呢?
有什么不同?哪种情况会更好?
谢谢.