【发布时间】:2014-04-23 04:27:19
【问题描述】:
我有以下代码:
char*
Sender::PrepareData(char* filename, unsigned long long int bytesToTransfer)
{
FILE* dataFile = fopen(filename, "rb");
if (dataFile==NULL) {fputs ("File error",stderr); exit (1);}
cout << "File Open: " << filename << endl;
char* theData;
size_t bytesRead = fread(&theData, 1, bytesToTransfer, dataFile);
if (bytesRead != bytesToTransfer) {fputs ("Reading error",stderr); exit (3);}
cout << "Data Read -- Num Bytes: " << bytesRead << endl;
cout << "Data to Send: " << *theData << endl;
return theData;
}
当这个方法被命中时,我的输出是:
文件打开:t.bin
数据读取——字节数:10
分段错误(核心转储)
我的t.bin 文件包含以下内容:
这是一个测试。
98172398172837129837
alsjdf89u32ijofiou2
测试测试...
!!## 测试测试!! ###(DLKAJ)
当我运行 gdb 时,segfault 输出是:
File Open: t.bin Data Read -- Num Bytes: 10
Program received signal SIGSEGV, Segmentation fault. 0x00000000004015e2 in Sender::PrepareData (this=0x603010, filename=0x7fffffffe363 "t.bin", bytesToTransfer=10)
at sender.cpp:98 98 cout << "Data to Send: " << *theData << endl;
谁能告诉我我做错了什么?
【问题讨论】:
-
cout