社区
工具平台和程序库
帖子详情
请问一下在分配内存的时候,在malloc之前有没有(char *)具体有什么区别?
huyunkun
2003-12-05 12:49:22
如题:
char *str;
下面两条的意思区别是什么?仅仅是加了(char *)有了强制类型的作用吗?还是有什么其他的说法?
str =(char *)malloc(sizeof(char));
str =malloc(sizeof(char));
...全文
130
7
打赏
收藏
请问一下在分配内存的时候,在malloc之前有没有(char *)具体有什么区别?
如题: char *str; 下面两条的意思区别是什么?仅仅是加了(char *)有了强制类型的作用吗?还是有什么其他的说法? str =(char *)malloc(sizeof(char)); str =malloc(sizeof(char));
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huyunkun
2003-12-06
打赏
举报
回复
http://www.mhdn.net/p/2002-01-12/4281.html
可以参考一下在new和 malloc的比较的第二条,(char *)的作用是强制指针类型转化
Andy84920
2003-12-05
打赏
举报
回复
同意:
str++ 是往后移了几个字节是取决于str的定义的类型.而与malloc出的内存无关.
那不用强制转换有什么不一样呢?反正它会自动转换哪.
zhouqingyuan
2003-12-05
打赏
举报
回复
malloc分配出来的是void*类型的,所以要用具体的类型强制转换。
michaelli
2003-12-05
打赏
举报
回复
就是强制转换的作用
021850524
2003-12-05
打赏
举报
回复
str =malloc(sizeof(char));虽然会有一个编译期间的警告,但是不会出现"编译器将难以判定其数据对齐长度".str++ 是往后移了几个字节是取决于str的定义的类型.而与malloc出的内存无关.
但还是应该用第一个方法写.
claider
2003-12-05
打赏
举报
回复
谭浩强的c语言书上好像有。大致就是楼上诸位说的。
SCUM
2003-12-05
打赏
举报
回复
通常情况下
下面那句会引发编译器的一个警告
分配出的内存其实没什么不同
但如果不指明分到的内存的引用类型
则在以后涉及使用str的时
编译器将难以判定其数据对齐长度
简单点说:
比如以后用了 str++
强制转换为char *后编译器就明确地知道 str++ 是往后移了一个字节(byte)
如果不理会警告而强制产生代码
则根据str的实际使用情况会产生不确定的结果以至不恰当的内存存取
在标准C/C++中
涉及动态分配内存的时候
最好还是使用强制转换
c语言中
malloc
分配矩阵,在C中将内存分配给
char
***
所以,我在为
char
***类型变量
分配内存
时遇到了麻烦.我的目标是创建一个字符串矩阵,我目前用于内存分配的代码如下:
char
***matrix;matrix = calloc(n*MAX_STR,sizeof(
char
**));for(z = 0; z < n; z++) {matrix[z]...
完美解析C语言(
char
*)
malloc
(x*sizeof(
char
))
char
*)
malloc
(x*sizeof(
char
)) 假设x=8,那么就是申请了8个连续的字节,当然就有8个连续的地址了,但是返回的是首地址。因为空间是连续的,所以可以通过首地址计算其他地址。 比如
char
*p=(
char
*)
malloc
(8*...
用
malloc
给void*
分配内存
,并将其转为
char
*的小体会
1.先看一个对比结果 ...如果没有给a指定结束符'\0',则输出的a长度为24,超过
malloc
所分配字节数的大小6,如下所示,把中间行注释:
char
* a=(
char
*)
malloc
(6); //a[1]='\0'; cout 2.看看
malloc
C/C++的
char
*到底是个什么东西——
char
*的内存占用与用法
C/C++的
char
*到底是个什么东西——
char
*的内存占用与用法为什么要写这篇前置知识——程序运行时的内存使用情况
char
*是什么
char
*的用法 首先声明,写这个
之前
看了一些博客,这篇对我的帮助最大,感谢这位博主:...
new和
malloc
的
区别
及内存管理及
char
[]与
char
*
区别
1.
malloc
()函数 1.1
malloc
的全称是memory allocation,中文叫动态内存分配。...如果分配成功则返回指向被
分配内存
的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。 1.
工具平台和程序库
24,855
社区成员
27,329
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章