文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>内存开辟,内存大小,字符长度的讨论

内存开辟,内存大小,字符长度的讨论

时间:2010-08-05  来源:y307921462

先看一段测试程序

#include "stdafx.h"
#include <malloc.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char *a=(char *)calloc(4,sizeof(char));
    char *b=(char *)malloc(4*sizeof(char));

    int *d=(int *)calloc(1,sizeof(int));
    char *c=(char *)malloc(sizeof(char));

    int nc=sizeof(c);        //4

    int nd=sizeof(d);        //4

    int na=sizeof(a)*4;        //16

    int nb=sizeof(b);        //4

    int sa=strlen(a);        //0

    int sb=strlen(b);        //4 有可能,还可能是其它,比如本次实验就是9

    memcpy(a,"ab",2);
    memcpy(b,"ab",2);
    int sa1=strlen(a);        //2

    int sb1=strlen(b);        //4 有可能,还可能是其它,比如本次实验就是9


    char str1[5],str2[5];
    memset(str1,0,sizeof(str1));
    int ns1=strlen(str1);    //0

    int nl1=sizeof(str1);    //5

    memcpy(str1,"ab",2);    
    int ns11=strlen(str1);    //2

    int nl22=sizeof(str1);    //5



    printf("Hello World!\n");
    return 0;
}


原型:extern void *calloc(int num_elems, int elem_size); 
用法:#include <alloc.h>
功能:为具有num_elems个长度为elem_size元素的数组分配内存,分配时把所分配的内存置为0,所以上例中字符串长度是0;
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
     当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *malloc(unsigned int num_bytes);
用法:#include <alloc.h>
功能:分配长度为num_bytes字节的内存块,不清空,所以字符串长度不为0
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
      当内存不再使用时,应使用free()函数将内存块释放。

原型:extern int strlen(char *s);
用法:#include <string.h>
功能:计算字符串s的长度,遇到\0则返回,需注意
说明:返回s的长度,不包括结束符NULL。

原型:extern char *strstr(char *haystack, char *needle);
用法:#include <string.h>
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。如寻找“ABC”,则返回‘A’的地址;

sizeof:首先,sizeof不是函数,返回一个对象后者类型所占的内存空间,用法有
1、sizeof(object):对象使用object,可以写成sizeof object,如int n;sizeof n;或者sizeof(i)都一样

2、sizeof(typename):类型使用,可以用sizeof(typename),如sizeof(int),可见,使用sizeof()永远是正确的。

也可以对函数使用,如sizeof(a()),返回函数a()的返回值所占空间。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载