【C++】默认实参的定义,malloc改成new
2012-09-19 12:44
495 查看
1.默认实参的定义
C++中,默认实参只能在声明和定义其中之一定义,否则重复定义。尽量在声明(头文件)中定义,这样其他文件调用该函数的时候,可以使用默认实参。
如下所示:
头文件log.h中声明如下:
void __declspec (dllexport) log_int_string(const char* pre,const int num,const char* aft="");
源文件log.cpp中定义如下:
void log_int_string(const char* pre,const int num,const char* aft)
{
outfile.open("C:\\log.txt",ofstream::app);
outfile<<pre<<num<<aft<<endl;
outfile.close();
}
2.malloc、free改成new、delete
程序原来在循环中使用malloc和free,进行多次动态内存分配和释放。在经理的笔记本上(XP系统)上运行的时候会出现错误,malloc出来的内存地址不能为read。但是,在我的台机(win7)上没有问题。
改成new、delete来进行内存分配和释放之后,问题就解决了。怀疑是C++中malloc动态分配的空间是“自由存储区”,这块存储区有大小限制或着在XP下有bug。。。
C++中,默认实参只能在声明和定义其中之一定义,否则重复定义。尽量在声明(头文件)中定义,这样其他文件调用该函数的时候,可以使用默认实参。
如下所示:
头文件log.h中声明如下:
void __declspec (dllexport) log_int_string(const char* pre,const int num,const char* aft="");
源文件log.cpp中定义如下:
void log_int_string(const char* pre,const int num,const char* aft)
{
outfile.open("C:\\log.txt",ofstream::app);
outfile<<pre<<num<<aft<<endl;
outfile.close();
}
2.malloc、free改成new、delete
程序原来在循环中使用malloc和free,进行多次动态内存分配和释放。在经理的笔记本上(XP系统)上运行的时候会出现错误,malloc出来的内存地址不能为read。但是,在我的台机(win7)上没有问题。
改成new、delete来进行内存分配和释放之后,问题就解决了。怀疑是C++中malloc动态分配的空间是“自由存储区”,这块存储区有大小限制或着在XP下有bug。。。
相关文章推荐
- c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义
- malloc/free和new/delete的主要区别以及c与c++关于结构体定义使用的区别
- c++默认实参
- 【C++】new和malloc的区别
- 关于C++默认形参定义的小问题
- C++中new和malloc的区别
- C++中new和delete的背后(最后还是调用了MSVCR90的malloc)
- C/C++中的malloc、calloc与new的区别
- C/C++ 内存分配:malloc/calloc/realloc/free和new/delete
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- C++之new和malloc差别
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- C/C++——C++中new与malloc的10点区别
- C++中定义类的对象:用new和不用new有何区别?
- C++知识点随笔(四):耦合问题、new和malloc、虚析构、多继承
- C++中new与malloc的10点区别
- C++内存分配秘籍—new,malloc,GlobalAlloc