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):分配内存,并且初始化内存信息为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>
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内存分配,动态库,静态库的生成与调用相关推荐
- linux库引入之动态库静态库(生成和使用)
库: 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容. 如何使用 用户需要同时具有头文件和库. ...
- 硬核拆解动态库静态库
[Github pages] 动态库与静态库是编程中十分常见的玩意儿,但是如此常见的东西在我真正用心去了解梳理过一遍之后才发现原来这里面有这么多的门道.本文就介绍一波 Linux 平台下,特指 GCC ...
- linux库--静态库、动态库
文章目录 一.分文件编程思想 二.动态库静态库 1.概念介绍 2.静态库的制作和使用 3.动态库的制作和使用 一.分文件编程思想 好处: 分模块的编程思想 例如: 网络 a 超声波b 电机c a.功能 ...
- VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)
VS2015编译32位Opencv310(动态库+静态库 编译过得,可以直接用的: http://download.csdn.net/download/longzaihuaxia/9802510 之前 ...
- CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...
- cmake中添加引用动态链接_CMake 添加头文件目录,链接动态、静态库(添加子文件夹)...
CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...
- c语言makecode头文件,cmake 添加头文件目录,链接动态、静态库
罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...
- linux系统应用学习(三)--- 动态库静态库
动态库静态库 库文件:一般指第三方提供的可调用的库函数文件,库文件封存的是函数体,即.c文件里面的内容. 动态库 静态库 Windows下: xx.dll ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
最新文章
- linux gdb 运行的程序,GDB(十)--调试正在运行的进程
- oracle 连多表查询语句,Oracle join多表查询
- Python+Opencv实现自动化阅卷
- 微服务架构师的职责——《微服务设计读书笔记》
- HDU1394(权值线段树)
- 如何提高UDP的可靠性
- LeetCode 1694. 重新格式化电话号码(模拟)
- 在 Windows 命令提示符下启动 MySQL:net start mysql 发生系统错误 5。 拒绝访问。解决方式小结
- 多线程之CountDownLatch和CyclicBarrier的区别和用法
- go语言中省略号用法和参数
- 老罗Android视频教程第二季(全套视频+源码)
- 记第一次FPV模式飞行穿越机的感受
- 磁碟机病毒***猖獗教你应对方法
- python输入负数_如何让python使用负数
- Nginx之13运筹帷幄 - (VeryNginx)
- 有线路由器加无线路由器的组网方法
- 259-数据明文传输的安全问题
- 使用SVM模型对京东评价进行情感分析---【大白话版】
- js进行数学运算,加法,减法,乘法,除法
- 20个创意的产品包装设计
热门文章
- NLP分析小说人物关系,找找主人公的真爱。
- wxWidgets:wxToolBar 示例
- boost::spirit模块实现演示语法的普通计算器示例
- boost::safe_numerics::base_type相关的测试程序
- boost::python模块实现使用任意 Python 序列创建 ndarray 的示例
- Boost.MultiIndex 使用序列索引的示例
- boost::mpi模块is_mpi_op 功能的测试
- 一个简单的你好,世界! 使用 Boost.MPI 消息传递的示例
- boost::math::quadrature::gauss用法的测试程序
- boost::hana::compose用法的测试程序