malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
来源:互联网 发布:知乎 加拿大ee 编辑:程序博客网 时间:2024/06/18 15:31
1.在main方法里面直接定义一个非常大的数组的时候,可能会出现栈溢出:错误代码演示:
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inta[1024 * 1024];
intnum = 100;
system("pause");
}
错误截图:
2.在定义数组的时候要定义数组的长度,否则会出现错误。(特例:在GCC编译器下,不会出现错误(因为标准不一样))。
3.打印并且赋值的是:
for (inti = 0;i <length;i++)
{
printf("%d\n",a[i] = i); //初始数组并打印
}
4.内存分配可以通过三个函数实现
A.void *malloc(size_t size):malloc只管分配,不初始化内容(size:Bytes to allocate:分配的字节数)。
B.void *calloc(size_t,size_t size):分配内存,并且初始化内存信息为0,其有两个参数(num:Number of elements;size:Length in bytes of each element),第一个参数是,开辟的数量,第二个参数是每个参数的大小。
C.void *realloc(void *memblock,size_t size);Reallocatememory blocks;用于分配内存.
memblock:Pointer to previously alloctedmemory block;
size:New size in bytes
例如:
int *p1 = (int*)malloc(sizeof(int)*10);//只管分配,不初始化
int *p2 = (int*)calloc(10,sizeof(int));//calloc会进行内存清零
例子:
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char *argv[])
{
//只管分配
int *p1 = (int *)malloc(sizeof(int)* 10);
//calloc会进行内存清零
int *p2 = (int *)calloc(10,sizeof(int));
printf("%p,%p",p1,p2);
for (inti = 0;i < 10;i++)
{
p1[i] = i;
p2[i] = i;
}
getchar();
return 0;
}
5.realloc分配内存
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
//分配内存
int *p = (int *)calloc(10,sizeof(int));
printf("%p\n",p);//输出地址
inti;
for (i = 0; i < 10;i++)
{
//*(p + i)等价于p[i]
*(p +i) =i;
}
//变长,第一个参数是指针地址,第二个参数表示的是数组的个数
int *pnew = (int *)realloc(p,100000);
//realloc.第一种情况,后面的内存没有用,就直接扩展变长
//第二种情况,后面的内存有人用,先分配新的长度,拷贝原来原来的内存,释放原来的内存
printf("%p",pnew);
for (inti = 10;i < 25000;i++)
{
*(pnew +i) =i;
}
system("pause");
return 0;
}
6.新建项目dlllib
编写代码:
#include<stdio.h>
#include<stdlib.h>
voidgo()
{
printf("Hello World\n");
}
7.制作dll,右击项目à属性à配置属性à常规à分别修改配置类型(动态库.dll)和目标文件名。
8.制作lib,右击项目à属性à配置属性à常规à分别修改配置类型(动态库.lib)和目标文件名。
9.引入lib.lib的方式有
A:将.lib拷贝到源代码所在的目录下。à通过代码引入.lib。代码是:
#pragma comment(lib,”test.lib”); //其中test.lib就是要引入的.lib静态库(注意,也要将静态库对应的.h放到源文件所在的位置)。
B:将.lib拷贝到源代码所在的目录下。à通过配置的方式引入静态库。方式是:
右击项目à属性à配置属性à输入à附加依赖项(如现有依赖项添加的方式添加.lib静态库)。
- malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
- 动态内存分配(malloc colloc realloc free)
- C语言动态内存分配之malloc与realloc区别
- C—动态内存分配之malloc与realloc的区别
- 动态内存分配函数malloc,calloc,realloc
- malloc与calloc,realloc动态内存的用法
- C语言动态内存分配中malloc与realloc有什么区别?
- 动态内存分配函数malloc、calloc和realloc
- C语言动态内存分配malloc/realloc/calloc
- C语言动态内存分配 malloc .calloc realloc
- [转载]C语言动态内存分配malloc/realloc/calloc
- linux C 之动态内存分配malloc ,calloc,realloc,free
- 动态内存分配(malloc、free、calloc、realloc)
- llinux -c 之动态内存分配函数(malloc、calloc、realloc)
- 动态内存分配(malloc、realloc、calloc函数)
- C语言中malloc、calloc、realloc动态内存分配的理解
- 动态内存的分配,包括 new delete malloc realloc free,一维数组和二维数组
- C语言中动态内存分配 malloc realloc calloc 的使用和比较
- Java回调函数的理解
- linux中的mmap与unmap
- SVN分支/合并原理及最佳实践
- 软件设计的七大原则
- ActionScript3游戏中的图像编程(连载十一)
- malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
- pat1074_备份
- ZOJ Problem Set - 1512 (Water Treatment Plants)
- leetcode做题总结,题目Copy List with Random Pointer 2013/10/03
- 黑马程序员 java学习笔记——面向对象2:继承
- int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别
- javascript类工厂的实现!
- 用于读取爬虫后的文件
- 四层和七层负载均衡的区别