1 c malloc dynamic-memory-allocation
malloc()函数形成一个内存块(例如,将20个字节类型转换为int),那么如何将其用作int类似于calloc()函数的块数组?它不应该用于int在整个20个字节(20 * 8位)中仅存储一个值吗?
(例如,将20个字节类型转换为int)
不,返回的内存将作为指向的指针void,该指针是不完整的类型。
我们将返回的指针分配给某种类型的指针变量,然后可以使用该变量访问内存。
引用C11第§7.22.3章,内存管理功能
[....]如果分配成功,则返回的指针将进行适当对齐,以便可以将其分配给具有基本对齐要求的任何类型的对象的指针,然后将其用于访问此类对象或此类对象中的数组分配的空间(直到明确释放该空间)。[...]返回的指针指向分配空间的开始(最低字节地址)。[....]
由于分配的内存是连续的,因此指针算术就像数组一样工作,因为数组中也将元素放置在连续的内存中。
需要澄清的一点是,指针不是数组。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |