機器如何知道爲泛型指針分配多少空間?它僅在投入某種類型時才分配?C語言中的通用指針和內存分配
回答
在大多數平臺上,指針通常都是基於正在編譯的系統的內存體系結構的固定大小。就其而言,他們的類型是無關緊要的。一個int
點的大小與點到複雜struct
相同。這是void
這一事實不會改變這一點。
所有的指針在編譯時都是編譯器已知的大小;正在指出的項目大小可能不同。通過所需大小malloc
/calloc
自己,所以編譯器與分配沒有問題。
編輯(回覆留言)有些情況下,不同指針的大小是不同的。例如,在編譯爲哈佛結構的代碼的數據指針必須包括區分存儲在從存儲在數據存儲器中的數據的程序存儲器中的數據,而函數指針不需要額外的存儲一個額外的存儲。但是,這是編譯器已知的,所以它通過查看指針的類型知道所需的分配大小。
C不是C++,模板的討論不屬於這裏。 –
@VariableLengthCoder糟糕,你是對的!我被提及的「通用」指針拋棄了。 – dasblinkenlight
我同意,OP的未定義術語「通用指針」的使用使得這個問題很難回答。 –
無論指向哪個指針,指針都是相同的大小,只是它們指向的內容可以是不同的大小。
這不一定是真的。 –
我不確定你的意思是「通用指針」,但如果你的意思是「指向無效」,它只是一種能夠代表任何其他指針值的類型。這並不意味着它必須是任意大的;實際上它被定義爲與「指向字符的指針」相同的大小和表示,它也可以指向任何類型。
- 1. C中的內存分配和指針
- 2. C:正確的語法分配內存使用指針指針
- 3. 指針和C內存分配
- 4. C++中的指針內存分配
- 5. 指向C中的結構和內存分配的指針
- 6. 指針數組的C++內存分配
- 7. 對象指針的C++內存分配
- 8. c語言中普通指針和自指針指針的區別
- 9. 內存分配指針指向數組和指針指針
- 10. c指向指針內存分配的指針
- 11. C語言指針
- 12. 將內存分配給char * C語言
- 13. 空指針,內存分配和Valgrind的
- 14. Ç - 指針內存分配
- 15. 雙指針內存分配
- 16. 爲C中的結構中的指針分配和分配內存?
- 17. Mips動態內存分配和指針
- 18. 內存分配(指針和堆棧)
- 19. 指針和動態內存分配
- 20. 內存分配和NULL指針
- 21. 辨別指針和內存分配
- 22. 三重指針和內存分配
- 23. 如何在內存中分配一個指針內的指針?
- 24. 分配內存,並分配給它的指針C++
- 25. 使用指針爲C中的3D數組分配內存?
- 26. 指針在共享內存 - C語言的Linux
- 27. C中的指針分配
- 28. C關於指向內存分配的指針的困惑?
- 29. C - 指針和內存
- 30. 帶指針和常規指針的二維數組? (C語言)
這未必是真實的。 –
@OliCharlesworth - 指針大小何時/如何不同? – zellio
C標準不作任何聲明,所有指針都具有相同的大小,以及一些古老的建築,他們是絕對不一樣的尺寸(雖然我沒有任何例子手)。 –