【发布时间】:2016-02-29 08:50:00
【问题描述】:
std::streampos size;
char * memblock;
std::ifstream input ("A.JPG", std::ios::in|std::ios::binary|std::ios::ate);
if (input.is_open())
{
size = input.tellg();
memblock = new char [size];
input.seekg (0, std::ios::beg);
input.read (memblock, size);
input.close();
std::cout << "[INPUT]the entire file content is in memory " << sizeof(memblock) << " \n";
}
delete[] memblock;
我想使用 ifstream 读取 A.JPG (28KB) 并将其保存到数组 memblock 中。但是为什么memblock的大小是4而不是28403而变量大小等于28403呢?
谢谢。
【问题讨论】:
-
将
sizeof(memblock)更改为sizeof(*memblock) -
@RomanZaytsev
sizeof(*memblock)在这里帮不上忙。 -
@πάντα ῥεῖ 你能详细说明一下吗?我在想,这种情况等于stackoverflow.com/a/37539/5247040
-
@RomanZaytsev,调用
sizeof(*memblock)将类似于调用sizeof(memblock[0]),即sizeof(char)。 -
@RomanZaytsev
sizeof()不能用于确定在运行时分配的数组的大小,计算是在编译时完成的。您的示例适用于静态分配的数组。
标签: c++