代码共享:C 和 C++ 分配内存比较

hongwenjun hongwenjun 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
函数声明(函数原型):
void *malloc(int size);
说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。

malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct data_type {
int age;
char name[20];
} data;

int main()
{
char* pstr = (char*) malloc(255);
char* ps = new char[255];

strcpy(pstr, "malloc 的用法");
strcpy(ps, "new 的用法");
printf("%s\t%s\n", pstr, ps);

data* bob , *boy ;
bob = (data*) malloc(sizeof(data)); // 分配一个结构
boy = new data; // new 一个结构内存

if (bob != NULL) {
bob->age = 22;
strcpy(bob->name, "Robert");
printf("%s is %d years old\n", bob->name, bob->age);

boy->age = 12;
strcpy(boy->name, "Tom");
printf("%s is %d years old\n", boy->name, boy->age);
}

free(bob); delete boy;

bob = (data*) malloc(sizeof(data) * 20); // 分配一个结构数组
boy = new data[20]; // new 一个结构数组

for (size_t i = 0 ; i != 20; ++i) {
sprintf(pstr + 6 , "->%d", i);
sprintf(ps + 3 , "->%d", i);

bob[i].age = i;
strcpy(bob[i].name, pstr);
printf("%s is %d\t\t", bob[i].name, bob[i].age);

boy[i].age = i;
strcpy(boy[i].name, ps);
printf("%s is %d\n", boy[i].name, boy[i].age);
}

free(pstr); delete ps;
free(bob); delete[] boy;
}
...全文
评论 1
收藏 已收藏
分享
返回顶部
hongwenjun
新手乐园 33,315 成员 41,769 内容