_countof、sizeof、strlen、_Msize的区别和用法(我再这里犯过错)

1 _countof:是系统定义的一个宏,求取元素的数组的元素个数

2 sizeof:运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,获得保证能容纳实现所建立的最大对象的字节大小

3 strlen:是一个函数,在运行时执行,返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL

4 _Msize :是一个函数, 返回开辟空间的大小

上代码:

    // 1 _countof
    char _aArray[12] = { 1,2,3,4 };
    int elements = _countof(_aArray);
    printf("_countof(_aArray):%d\n\n", elements);

    // 2 sizeof
    char* _pBMalloc = (char*)malloc(sizeof(char) * 512);
    char * _pBNew = new char[10];
    char _bArray[15] = {};
    printf("sizeof(_pMalloc): %d\n", sizeof(_pBMalloc));
    printf("sizeof(_pNew): %d\n", sizeof(_pBNew));
    printf("sizeof(_bArray): %d\n\n", sizeof(_bArray));

    // 3 strlen
    char* _pCMalloc = (char*)malloc(sizeof(char) * 512);
    char * _pCNew = new char[10];
    char _cArray[15] = { '?', '?', '?', '?'};
    _pCNew = "????-????";
    _pCMalloc = "????-????-????";
    printf("strlen(_pMalloc): %d\n", strlen(_pCMalloc));
    printf("strlen(_pNew): %d\n", strlen(_pCNew));
    printf("strlen(_cArray): %d\n\n", strlen(_cArray));

    // 4 _msize
    char* _pDMalloc = (char*)malloc(sizeof(char) * 512);
    char * _pDNew = new char[10];
    char _dArray[15] = {};
    printf("_msize(_pDMalloc): %d\n", _msize(_pDMalloc));
    printf("_msize(_pDNew): %d\n", _msize(_pDNew));
    //ERROR: _msize(_dArray)
    //printf("_msize(_dArray): %d\n\n", _msize(_dArray));

输出:

能放几个元素
这个单位空间是多少
这个空间使用了多少
malloc 或 new 出来的空间大小

_countof、sizeof、strlen、_Msize的区别和用法(我再这里犯过错)_第1张图片

我再这里犯过错

每次我只能接受4个字符,

_countof、sizeof、strlen、_Msize的区别和用法(我再这里犯过错)_第2张图片

你可能感兴趣的:(_countof、sizeof、strlen、_Msize的区别和用法(我再这里犯过错))