c++的GUI库fltk中,new的对象从不delete,且不造成内存泄漏。内部是怎样实现的呢?
以下是fltk官方帮助文档提供的一个完整的例子:#include<FL/Fl.H>#include<FL/Fl_Window.H>#include<FL/Fl_Box.H...
以下是fltk官方帮助文档提供的一个完整的例子:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
我们看到
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
但是没有delete window和delete box。fltk里面是怎样实现delete的呢?我见过的智能指针都是基于模版实现的。这里面好像没有智能指针。
另外,c语言的time.h中有个函数:char *asctime( const struct tm *ptr ); 返回时间的字符串。注意,此处返回的是指针,难道指针所指的内存空间在堆上吗,如果在函数局部栈上,返回的指针根本没有意义。求大神解答。 展开
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
我们看到
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
但是没有delete window和delete box。fltk里面是怎样实现delete的呢?我见过的智能指针都是基于模版实现的。这里面好像没有智能指针。
另外,c语言的time.h中有个函数:char *asctime( const struct tm *ptr ); 返回时间的字符串。注意,此处返回的是指针,难道指针所指的内存空间在堆上吗,如果在函数局部栈上,返回的指针根本没有意义。求大神解答。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询