九江恒大御景qq群:我讨厌C++ RunTime函数,fwrite(buff,256,218,file)竟然写了12K字节并且报错.

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 19:50:21
原来如此,谢谢!
可我还是不喜欢C++ Run Time函数,比如这个new.在DLL里生成的实例在应用程序里就不能调用delet,问题是要处理一个链表,不确定是在哪里生成的.最后是用new 的一个重载函数new buffer class解决,因为它不需要调用delete.我们可以构造自己的new函数吗?它太特殊了.

你的第二个参数是错误的, 应该是这样:sizeof( char ),它是写入单元大小,以字节为单位,第三个参数是总的要写入几个单元, 打开文件的话一般就以1字节为写入单位, 除非你的文件是以结构定义的, 那么要改成这样:sizeof(YOURSTRUCT);所以,仅256*218>12k, 所以缓冲溢出是必然的,

标准定义:
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

buffer Pointer to data to be written
Size Item size in bytes
count Maximum number of items to be written
stream Pointer to FILE structure

例子:
fwrite( list, sizeof( char ), 25, stream );