当前位置:  技术问答>linux和unix

malloc(xx)

    来源: 互联网  发布时间:2017-04-02

    本文导语:  一下两个定义有何区别?? int len = 1000; 1. unsigned char *Y_DATA; unsigned char *YY_DATA; unsigned char *YYY_DATA; Y_DATA = (unsigned char *)malloc(len); YY_DATA = (unsigned char *)malloc(len/4); YYY_DATA = (unsigned char *)malloc(len/4); 2. unsigned...

一下两个定义有何区别??
int len = 1000;
1.
unsigned char *Y_DATA;
unsigned char *YY_DATA;
unsigned char *YYY_DATA;
Y_DATA = (unsigned char *)malloc(len);
YY_DATA = (unsigned char *)malloc(len/4);
YYY_DATA = (unsigned char *)malloc(len/4);

2.
unsigned char Y_DATA[3];
Y_DATA[0] = (unsigned char *)malloc(len);
Y_DATA[1] = (unsigned char *)malloc(len/4);
Y_DATA[2] = (unsigned char *)malloc(len/4);

第二中情况,是不是相当于连续的?比如说我要使用这一组数据的时候,直接利用void *memcpy(void *dest, const void *src, size_t n);
来复制Y_DATA[]总的所有内容是不是只要:memcpy(dest,&Y_DATA[0],len*3/2)就可以了?
而第一种需要三个都cpy一次··,是吗?

|
两种情况我都验证了,内存空间都是连续的。
第一种情况
Y_DATA = 19431440
YY_DATA = 19432448
YY_DATA-Y_DATA = 1008
YYY_DATA = 19432720
YYY_DATA-YY_DATA = 272

第二种情况
Y_DATA[0] = 10731536
Y_DATA[1] = 10732544
Y_DATA[1]-Y_DATA[0] = 1008
Y_DATA[2] = 10732816
Y_DATA[2]-Y_DATA[1] = 272
在第二种情况下,你的代码不对,因为内存地址是32位的,不应该用unsigned char类型
应该用unsigned long ,某些平台用 unsigned int 也可以。

|
内存空间虽然是连续的,但不同平台内存的对齐放式不一样,所分配的得到空间会大于你申请的空间,直接用memcopy(),可以实现数据的复制,但使用的时候需要注意每个数据的启始地址,因为中间可能会有小间隔。

|
没有任何区别。

|
没有任何区别,不能一次实现三个地址的copy

|
试下呗,然后core...

|


呵呵, 这位仁兄不要这么急着下结论哈 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c malloc函数定义及用法详解
  • gcc -shared -fpic malloc.c -o malloc.so
  • c/c++中的内存分配 malloc 和 new介绍及相互之间的区别
  • glibc源码中malloc函数在哪里实现的?
  • malloc函数详解及用法举例
  • 关于malloc的问题
  • linux 下可否管理malloc创建的内存?
  • malloc函数的问题
  • malloc和realloc的区别
  • free 和malloc的问题
  • 问个malloc函数的问题
  • malloc fail時的作法
  • 数组和malloc问题求助
  • malloc问题
  • AIX机器上遇到的malloc问题
  • log-malloc2
  • 程序调用malloc,引发segmention error,怎么会这样??????????
  • 求救一个关于malloc的问题,
  • 请教》 关于UNIX系统中 malloc 调用的严重问题。 求救。
  • mmap和malloc的区别是什么?
  • 在驱动程序里,用数组,或malloc是申请到虚拟内存吧?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,