第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將sizeof與動態(tài)分配的數(shù)組一起使用

將sizeof與動態(tài)分配的數(shù)組一起使用

C
MM們 2019-09-06 16:16:15
gcc 4.4.1 c89我有以下代碼片段:#include <stdlib.h>#include <stdio.h> char *buffer = malloc(10240); /* Check for memory error */ if(!buffer) {    fprintf(stderr, "Memory error\n");    return 1; } printf("sizeof(buffer) [ %d ]\n", sizeof(buffer));但是,sizeof(緩沖區(qū))總是打印4.我知道char *只有4個字節(jié)。但是,我已經(jīng)分配了10kb的內(nèi)存。那么尺寸不應該是10240嗎?我想知道我在想什么?非常感謝任何建議,
查看完整描述

3 回答

?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

你要的是a的大小char*確實是4,而不是緩沖區(qū)的大小。該sizeof運營商不能返回一個動態(tài)分配的緩沖區(qū)的大小,只有在編譯時已知的靜態(tài)類型和結(jié)構(gòu)的大小。


查看完整回答
反對 回復 2019-09-06
?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

號buffer是一個char *。它是指向char數(shù)據(jù)的指針。指針只占用4個字節(jié)(在您的系統(tǒng)上)。


它指向10240字節(jié)的數(shù)據(jù)(順便說一下,它不是1Kb。更像是10Kb),但指針不知道這一點。考慮:


int a1[3] = {0, 1, 2};

int a2[5] = {0, 1, 2, 3, 4};


int *p = a1;

// sizeof a1 == 12 (3 * sizeof(int))

// but sizeof p == 4

p = a2

// sizeof a2 == 20

// sizeof p still == 4

這是數(shù)組和指針之間的主要區(qū)別。如果它不起作用,sizeof p將改變上面的代碼,這對編譯時常量沒有意義。


查看完整回答
反對 回復 2019-09-06
  • 3 回答
  • 0 關(guān)注
  • 730 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號