C++ 内存的问题,求解释解释


//#include "stdlib.h"
#include <iostream>
#include "Test.h"
Test::Test()
{
    std::cout << "char 类型的空间为:" << sizeof(char) << std::endl; //1  Byte;
    str = (char*)malloc(3);//栈里开辟3 Byte的空间(为啥不报错?)

    std::cout << "重新看一下str的大小:" << sizeof(*str) << std::endl; //1  Byte;
    //std::cout << "重新看一下str的大小:" << sizeof(*str) << std::endl; //1  Byte;

    std::cout << "看一下int的大小,这里我用10000:" << sizeof(10000) << std::endl; //4  Byte;
    *str = 10000; //赋值一个4 Byte的值(为啥不报错?)

    std::cout << "重新看一下str的大小:" << sizeof(*str) << std::endl; //1  Byte;

    //printf("调用构造函数\n");
}
Test::~Test() {
    //delete str;
    printf("调用析构函数\n");
}

下面是头文件

#pragma once
class Test {
public:
    Test();
    ~Test();
private:
    char* str;
};


你这么理解,空间是没有类型的,空间内存的数字也只是数字,没有意义。决定它有什么意义的是用的人。

还有,长度不同的类型转换时,会发生截断和扩充。