当前位置:网站首页>关于指针、地址的大小的问题(以及malloc的用法)
关于指针、地址的大小的问题(以及malloc的用法)
2022-08-09 09:01:00 【Mike峰】
任何变量的指针大小都是一样大小的空间,例如在64位机中是4个字节,在32位机中是2个字节。
而我们分配一个地址,就比如
力扣145题https://leetcode-cn.com/problems/binary-tree-postorder-traversal/solution/er-cha-shu-de-hou-xu-bian-li-by-leetcode-solution/
该题其中一句:
int *matrix = malloc(sizeof(int) * 2001);
给res这个指针分配了2001的int大小的空间,实际上就是给这里分配了可以装下2001个int类型变量的空间, 并且空间的首地址分配为res。
虽然分成了块,但是实际上空间是连续的,会意即可。
接下来,我们插入一个程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
char aa[10];
}Node;
int main()
{
Node* fat = (Node*)malloc(sizeof(Node*));
strcpy(fat->aa, "aaa");
printf("%s", fat->aa);
}
有什么问题呢,我们看到
Node* fat = (Node*)malloc(sizeof(Node*));
Node*表示分配的是Node*(也就是指针4字节)这么大的空间,
实际上我们需要的是Node这么大的空间分给fat这个指针。
边栏推荐
猜你喜欢
随机推荐
mysql-5.5.40的完全卸载
往二维数组追加键值
Xpath之爬取全国城市名称学习
ctf misc 图片题知识点
fastadmin图片上传方法改造
腾讯云服务器修改为root登录安装宝塔面板
微信小程序获取用户收货地址列表wx.chooseAddress
SQL server中的数据类型
ASP.net中的数据库应用
【场景化解决方案】ERP系统与钉钉实现数据互通
GBJ610-ASEMI超薄整流扁桥GBJ610
[MySQL]mysql: Solve the problem of [Err] 1093 - You can't specify target table 'table name' for update in FROM clause
【LeetCode每日一题】——225.用队列实现栈
C#学习笔记
hdu2191 多重背包(2016xynu暑期集训检测 -----B题)
内存中的swap机制
STM32 如何知道FLASH的使用情况
权限管理模型 ---- ACL、RBAC和ABAC(详解)
RDMA
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(二分经典题)