您的位置:首页 > 运维架构 > Linux

清明节期间学习记录,无愧对先人啊~~~LINUX ANSI C动态内存管理示范代码

2013-04-04 11:50 344 查看
我们重庆万州家人习俗是春节时为祖先上坟的。

今年回家时,我和小孩,老婆,爸妈去祖上除过草,挂过纸,放过鞭炮了。

希望祖上在另一个世界,一切安好。

清明节期间,努力学习,无愧对先人吧。。。

[root@localhost ccode]# cat realloc_example.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[], char* envp[])
{
int input;
int n;
int *numbers1;
int *numbers2;
numbers1 = NULL;

if((numbers2 = (int *)malloc(5 * sizeof(int))) == NULL)
{
printf("malloc memory unsuccessful.");
numbers2 = NULL;
exit(1);
}

for(n = 0; n < 5; n++)
{
*(numbers2 + n) = n;
printf("numbers2's data: %d\n", *(numbers2 + n));
}
printf("Enter an an integer value you want to remalloc (enter 0 to stop)\n");
scanf("%d",&input);
numbers1 = (int *)realloc(numbers2, (input + 5) * sizeof(int));
if(numbers1 == NULL)
{
printf("Error (re)allocating memory");
exit(1);
}

for(n = 0; n < 5; n++)
{
printf("the numbers1s's data copy from numbers2: %d\n", *(numbers1 + n));
}
for(n = 0; n < input; n++)
{
*(numbers1 + 5 +n) = n * 2;
printf("numbers1's new data: %d\n",*(numbers1 + 5 + n));
}
printf("\n");
free(numbers1);
numbers1 = NULL;
return 0;
}


效果:



注意事项:

静态对象明名字的变量,可以直接对其进行操作,而动态对象是没有名字的变量,需要通过指针间接对它进行操作。

后来想想,其实计算机不会阻止很烂的程序很耗系统资源的运行。

最终,决定水平高低的还是算法,时间和空间复杂度。

SO,计算机不是万能的,人才是决定一切的因素。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: