malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
1.在main方法里面直接定义一个很大的数组的时候。可能会出现栈溢出:错误代码演示:
#include<stdio.h>
#include<stdlib.h>
void
main()
{
int
a[1024 * 1024];
int
num = 100;
system("pause");
}
错误截图:
2.在定义数组的时候要定义数组的长度,否则会出现错误。
(特例:在GCC编译器下,不会出现错误(由于标准不一样))。
3.打印而且赋值的是:
for (int
i = 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),其有两个參数(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>
int
main(int
argc,
char *argv[])
{
//仅仅管分配
int *p1
 = (int *)malloc(sizeof(int)*
 10);
//calloc会进行内存清零
int *p2
 = (int *)calloc(10,
sizeof(int));
printf("%p,%p",
p1,
p2);
for (int
i = 0;
i < 10;
i++)
{
p1[i]
 = i;
p2[i]
 = i;
}
getchar();
return 0;
}
5.realloc分配内存
#include
<stdio.h>
#include<stdlib.h>
void
main()
{
//分配内存
int *p
 = (int *)calloc(10,sizeof(int));
printf("%p\n",
p);//输出地址
int
i;
for (i
 = 0; i < 10;i++)
{
//*(p + i)等价于p[i]
*(p +
i) =
i;
}
//变长,第一个參数是指针地址。第二个參数表示的是数组的个数
int *pnew
 = (int *)realloc(p,100000);
//realloc.第一种情况,后面的内存没实用,就直接扩展变长
//另外一种情况。后面的内存有人用,先分配新的长度,拷贝原来原来的内存,释放原来的内存
printf("%p",pnew);
for (int
i = 10;
i < 25000;i++)
{
*(pnew +
i) =
i;
}
system("pause");
return 0;
}
6.新建项目dlllib
编写代码:
#include<stdio.h>
#include<stdlib.h>
void
go()
{
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内存分配,动态库,静态库的生成与调用的更多相关文章
- C++基础知识之动态库静态库
		一. 静态库与动态库 库(library),一般是一种可执行的二进制格式,被操作系统载入内存执行. 我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库 静态库和动态库区别: ... 
- Linux 动态库 静态库
		什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和Linux的本质不同,因此二者库的二进制是不兼容的.Linux操作系统支持的库函数分为静态库和动态库 ... 
- C_动态库|静态库
		动态库 动态链接库简称DLL,同时以.dll 为后缀,主要用于提供代码和数据 dll 并不是所有数据都能被访问到,必须要进行导出 动态链接库在内存中始终只保存了一份数据,起到了节约内存的作用 生成动态 ... 
- Linux 下动态库 / 静态库(依赖)
		一. 依赖动态库的动态库 libfun.so依赖动态库libtest.so(libfun.so动态库里的函数intnothing()调用了libtest.so里的intmytest()函数),而mai ... 
- linux 动态库 静态库 函数覆盖
		本文讨论了linux动态库 静态库中函数的覆盖问题. 测试目的: 同名函数,分别打成动态库libdync_lib.so与静态库libstatic_lib.a,并把libstatic_lib.a打到另 ... 
- CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
		CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ... 
- c/c++:动态库 静态库 linux/windows 例子 (转)
		作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静 ... 
- Python语言、编译解释、动态库静态库、编译过程、头文件
		学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译: 编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了.一把翻译 ... 
- cmake 添加头文件目录,链接动态、静态库(转载)
		来源网址:http://www.cnblogs.com/binbinjx/p/5626916.html 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目 ... 
随机推荐
- caioj 1078 动态规划入门(非常规DP2:不重叠线段)(状态定义问题)
			我一开始想的是前i个区间的最大值 显然对于当前的区间,有不选和选两种情况 如果不选的话,就继承f[i-1] 如果选的话,找离当前区间最近的区间取最优 f[i] = max(f[i-1, f[j] + ... 
- Object-C,文件路径API
			犀利吐槽 1.同样都是"文件和目录操作",java中,就用java.util.File一个类,就封装了很多API,而Object-C搞了这么多类和函数.具体原因,有待分析啊. 2. ... 
- 【Educational Codeforces Round 37 C】 Swap Adjacent Elements
			[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然l..r这一段连续的1可以把l..r+1变成有序的. 那么就把所有的连续1段变成有序的就好. 看看最后是不是升序即可. [代码] ... 
- 【codeforces 821E】Okabe and El Psy Kongroo
			[题目链接]:http://codeforces.com/problemset/problem/821/E [题意] 一开始位于(0,0)的位置; 然后你每次可以往右上,右,右下3走一步; (x+1, ... 
- hdu5336XYZ and Drops
			题意:给出r*c的网格,有的网格为空.有的有水.再给出一个爆炸点,从这个点向四周爆出四个水滴,若碰到水则融为一体,若碰到其它水滴直接跑过去互不影响.每秒可跑一格,若水中水滴数量超过4则爆开.问T秒后网 ... 
- 高性能网络编程 - select系统调用
			IO复用使得程序可以同一时候监听多个文件描写叙述符,比方client须要同一时候处理用户输入和网络连接,server端须要同一时候处理监听套接字和连接套接字,select系统调用可以使得我们 ... 
- HDU 5391-Zball in Tina Town(数论)
			题目地址:pid=5391">HDU 5391 题意: Tina Town 是一个善良友好的地方,这里的每个人都互相关心.Tina有一个球,它的名字叫zball. zball非常奇妙, ... 
- Linux安全应用之防垃圾邮件服务器的构建
			Linux安全应用之防垃圾邮件服务器的构建 一.垃圾邮件产生的原因 垃圾邮件(SPAM) 也称作UCE(Unsoticited Commercial Email.未经许可的商业电子邮件)或UBE(Un ... 
- Sub Thread to update main Thread (UI) 2
			Sub Thread to update main Thread (UI) 2 Handler.post(somethread); Handler.sendMessage("Msg&quo ... 
- pigofzhou的巧克力棒
			Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体地,这根巧克力棒长为 n,他想将这根巧克力棒折成 n ... 
