내 Mac 노트북에는 4GB 1600MHz DDR3 메모리가 있습니다. 고전 MemoryBlock 클래스에서 Memoryblock 클래스는 오버플로 후에 숫자와 이유 및 방법을 제공합니다.
는class MemoryBlock
{
public:
// Default constructor
explicit MemoryBlock(): _length{0}, _data{nullptr} {}
explicit MemoryBlock(const int l): _length{l}, _data{new int[l]} {}
// Big-Five (blahblah)
// --------
int length() const
{
return _length;
}
private:
int _length;
int* _data;
};
은 그 때 나는
1e11
에
1e10
에
1e9
에서
x
을 변경, 같은 오버 플로우 뭔가 후 어떤 일이 발생하는지 알아보기 위해 노력했다. 이 날을 제공
MemoryBlock x(100000000000);
Info<< "x's length = " << x.length() << endl;
는
warning: overflow in implicit constant conversion [-Woverflow]
MemoryBlock x(100000000000);
size_t
_length
같은 형식을 사용하여, 나는 할 수 없습니다,
[LOG] x( 1000000000)'s length = 1000000000
[LOG] x( 10000000000)'s length = 1410065408
[LOG] x(100000000000)'s length = 1215752192
경고 뭔가처럼, (g++-6
및 cmake
컴파일) 왜 그런지 알지 못하고이 경고를 보게됩니다.
어쨌든 제 질문은 어떻게 1410065408
과 1215752192
이 생성됩니까? 감사
@ NathanOliver : 나는 매우 열악한 말을 남겼다. 바라건대 지금은 덜 오해의 소지가 있습니다. –
@ NathanOliver : 예, OP의 아키텍처에 대한 세부 정보를 알지 못해도 매우 까다로운 일입니다. 나는 그 해답을 더 발전 시키려고 노력할 것이다. –