永发信息网

linux 指针 所指空间的大小

答案:2  悬赏:20  手机版
解决时间 2021-02-27 04:29
char *p;
p=malloc(a);
char q[b];
请问通过什么方法 能够 得到 a 和 b呢?
malloc_usable_size 可以得到 大于a的一个数值。除非a=12+(i*7)+ i(这玩意不准没心情仔细列出公式)

但是不能得到 b的值。请问有什么方法可以得到b的值吗?不能用strlen。因为 strlen遇到0就返回了。
最佳答案
在程序中,不是使用new申请的内存空间, 不能用delete释放。
编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete函数去释放申请的内存空间。
需遵循原则:new和delete的成对出现。只出现一个是错误的或不规范的写法,即时能编译通过,也会有安全隐患;
///
1、在程序中使用malloc分配的空间,可由函数free() 释放该块内存。
例:
char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));
// ....
free(Ptr);
Ptr = NULL;
2、使用new 申请的内存空间,可以由delete 释放;(new和delete是成对出现的)
例:
int *a = new int;
// ....
delete a; //释放单个int的空间
注:
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,使用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
全部回答
指针可以强制转换. int *p = "a123"; int size = sizeof(p); size即你说的. 如果要计算p指向的大小,则使用下面这个 size=sizeof(p)*strlen(p);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求洛克王国2012可以抓的稀有宠物大全
did you find
文件夹经常一点右键就没有响应,强行关闭恢复
除了白菜根,蒜,还有什么在家能发芽 开花的
才古庄村在哪里啊,我有事要去这个地方
oopor7s软件商店进不去 怎么办
盱眙大凉拌怎么做,求指导。
设F1.F2分别为双曲线a方分之x方-b方分之y方=1
伊林园清真馆我想知道这个在什么地方
我老婆是个很爱发脾气,爱骂人的一个人,刚开
佳味饭店在哪里啊,我有事要去这个地方
vivox710lshot侧面底下的那个键是干什么用的
昨天从台阶上跳下去之后小腿就特别疼,怎么回
用示波器观察李萨如图形时,为何得到的是大小
国家大剧院演出票,想去看一场演出,票价太贵
推荐资讯
布德镇我想知道这个在什么地方
隐形近视眼镜是不是每天带每天晚上摘下来的
68,500英镑英用语怎么说
用一空纸筒罩在焰火的外面感觉xx,说明xx
银行卡刷卡业务是数字货币业务吗
你好,我有台清华同方K41H- I3 2310M笔记本,
我想通过成人高考报考浙江大学,但是我接下来
福特福克斯经典09款的两项,变速箱油多久可以
我们现在要出售婚后购房 夫妻双方必都去吗?
杜威化妆学校在什么地方啊,我要过去处理事情
一根电线里有三种颜色,哪个是L哪个是N
不敢回家把户口本拿出来,主要想和父母的户口
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?