[英]What does a cast from malloc return?
我試圖了解名稱p的最后一行返回的內容。
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
int* p;
p = (int*)malloc(sizeof(int));
}
Q1
假設malloc(sizeof(int))
返回&name
(名稱可以是x或y或w),將行解釋為p=(int*)(memoryAddress to begining of block size)
是否安全?
Q2
有人可以重寫它以使其更清楚嗎? 也許在p =之前添加一行。我是C ++的初學者。
這是指向我如何理解所有內容的圖像的鏈接……僅供參考。
p = (int*)malloc(sizeof(int));
該行僅分配4字節的內存(實際大小取決於編譯器),然后返回第一個字節的地址。 該第一個字節地址分配給p。
malloc的返回類型是通用的(void *)。 因此,我們需要將其強制轉換為int *才能將其用作整數。 說“將它用作整數”,意味着連續4個字節的內存將用作一個數據。
因此,如果將數據放入該變量中,如下所示:
*p=1234
從存儲在p中的存儲位置開始,它將使用所有32位存儲器。
關於安全性,請閱讀評論。
我想我已經知道了。
Malloc剛分配了sizeof(type)的內存,然后它僅返回一個(void ),並且在c ++中,不能為int * p分配一個void *,因為c ++嚴格要求“隱式轉換”。
所以答案
Q1答案
假設錯誤,malloc(sizeof(int))返回為sizeof(...)分配的字節數的第一個字節的void *類型
Q2答案
這可以重寫為
#include <stdio.h>
#include <stdlib.h>
int main(){
int* p;
p = new int;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.