1.malloc和new的区别?
①Malloc/free是函数,new/delet是c++运算符它们都可用于申请动态内存和释放内存。
②c程序只能调用malloc/free,c++两者都可以。
③c++ new运算符:自动计算内存大小并申请堆内存;调用构造函数;返回正确的指针;普通调用new申请内存失败是抛出异常std::bad_clloc而不是返回NULL,(nothrow 不抛异常)new 则失败的时候返回NULL;
2.假设有函数调用f(f1(),f2()),这样的调用是否合法,如果合法那么运行顺序是则么样的?
合法,运行顺序:在linux上使用c语言实验结果:f2() f1() f() ,函数参数列表栈从右到左入栈。
3.GDB调试如何查看堆栈信息,如何在运行过程中打端点?
4.编写一个可变长度形参的函数。
#include<stdarg.h>
void print(const char*format,...)
arg_list arg;
arg_start(arg,format);
while(*format)
{
xxxxxx;
format++;
}
arg_end(arg);