深入理解C語言sizeof()計(jì)算空間大小為8的問題
在練習(xí)數(shù)據(jù)結(jié)構(gòu)過程中,定義指針p,并且申請(qǐng)了10個(gè)char類型空間,但在計(jì)算p所指空間大小時(shí)候,發(fā)現(xiàn)了一些奇怪的現(xiàn)象。
#include <stdio.h>
#include <stdlib.h>
int main(){
char s[12];
printf("the size of memory occupied = %d\n",sizeof(s));//12
char *s1 = "hello,world.";
printf("the size of memory occupied = %d\n",sizeof(s1));//8
char *s2 = (char *)malloc(sizeof(char) * 12);
printf("the size of memory occupied = %d\n",sizeof(s2));//8
int a[3] = {1,2,3};
printf("the size of memory occupied = %d\n",sizeof(a));//12
int *a1 = (int *)malloc(sizeof(int)*3);
printf("the size of memory occupied = %d\n",sizeof(a1));//8
return 0;
}可以發(fā)現(xiàn),sizeof()只有在計(jì)算定義為數(shù)組的大小是準(zhǔn)確的,在計(jì)算指針指向的數(shù)組或者申請(qǐng)空間的大小時(shí)候,不準(zhǔn)確。
通過查閱資料得知,sizeof()不可以用來計(jì)算申請(qǐng)出來空間的大小。
那么,為什么是8?是因?yàn)?是指針?biāo)伎臻g的大小。
那我想要計(jì)算申請(qǐng)的空間的大小,怎么辦?
=========> _msize() <=============
_msize()函數(shù)可以計(jì)算出申請(qǐng)空間的大小,如下:
#include <stdio.h>
#include <stdlib.h>
int main(){
char *s2 = (char *)malloc(sizeof(char) * 12);
printf("sizeof(s2) = %d\n",sizeof(s2));//8
printf("_msize(s2) = %d\n",_msize(s2));//12
int *a1 = (int *)malloc(sizeof(int)*3);
printf("sizeof(a1) = %d\n",sizeof(a1));//8
printf("_msize(a1) = %d\n",_msize(a1));//12
return 0;
}!!!!!!!!!!!!如下兩位博主講的更為詳細(xì)!!!!!!!!!!!!!!!!!!
參考資料:
C語言——判斷矩陣維數(shù)(sizeof、_msize)
C++學(xué)習(xí)筆記之如何獲取指針開辟空間或數(shù)組空間的大小以及_countof、sizeof、strlen、_Msize的區(qū)別
到此這篇關(guān)于深入理解C語言sizeof()計(jì)算空間大小為8的問題的文章就介紹到這了,更多相關(guān)C語言sizeof()計(jì)算空間大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)結(jié)束應(yīng)用進(jìn)程小工具
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)結(jié)束應(yīng)用進(jìn)程小工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
C語言中對(duì)字母進(jìn)行大小寫轉(zhuǎn)換的簡(jiǎn)單方法
這篇文章主要介紹了C語言中對(duì)字母進(jìn)行大小寫轉(zhuǎn)換的簡(jiǎn)單方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
C語言中獲取進(jìn)程識(shí)別碼的相關(guān)函數(shù)
這篇文章主要介紹了C語言中獲取進(jìn)程識(shí)別碼的相關(guān)函數(shù),分別為getpid()函數(shù)和getppid()函數(shù)的使用,需要的朋友可以參考下2015-08-08
C語言實(shí)現(xiàn)簡(jiǎn)單職工信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)單職工信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
QT使用QComBox和QLineEdit實(shí)現(xiàn)模糊查詢功能
模糊查詢是指根據(jù)用戶輸入的文本,在下拉框的選項(xiàng)中進(jìn)行模糊匹配,并動(dòng)態(tài)地顯示匹配的選項(xiàng),本文將使用QComBox和QLineEdit實(shí)現(xiàn)模糊查詢功能,需要的可以參考下2023-11-11

