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内存分配,动态库,静态库的生成与调用的更多相关文章

  1. C++基础知识之动态库静态库

    一. 静态库与动态库 库(library),一般是一种可执行的二进制格式,被操作系统载入内存执行. 我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库 静态库和动态库区别: ...

  2. Linux 动态库 静态库

    什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和Linux的本质不同,因此二者库的二进制是不兼容的.Linux操作系统支持的库函数分为静态库和动态库 ...

  3. C_动态库|静态库

    动态库 动态链接库简称DLL,同时以.dll 为后缀,主要用于提供代码和数据 dll 并不是所有数据都能被访问到,必须要进行导出 动态链接库在内存中始终只保存了一份数据,起到了节约内存的作用 生成动态 ...

  4. Linux 下动态库 / 静态库(依赖)

    一. 依赖动态库的动态库 libfun.so依赖动态库libtest.so(libfun.so动态库里的函数intnothing()调用了libtest.so里的intmytest()函数),而mai ...

  5. linux 动态库 静态库 函数覆盖

    本文讨论了linux动态库  静态库中函数的覆盖问题. 测试目的: 同名函数,分别打成动态库libdync_lib.so与静态库libstatic_lib.a,并把libstatic_lib.a打到另 ...

  6. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  7. c/c++:动态库 静态库 linux/windows 例子 (转)

    作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静 ...

  8. Python语言、编译解释、动态库静态库、编译过程、头文件

    学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译: 编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了.一把翻译 ...

  9. cmake 添加头文件目录,链接动态、静态库(转载)

    来源网址:http://www.cnblogs.com/binbinjx/p/5626916.html 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目 ...

随机推荐

  1. 【Henu ACM Round#20 D】 Devu and Partitioning of the Array

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一开始所有的数字单独成一个集合. 然后用v[0]和v[1]记录集合的和为偶数和奇数的集合它们的根节点(并查集 然后先让v[0]的大小 ...

  2. 洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair

    P1209 [USACO1.3]修理牛棚 Barn Repair 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. ...

  3. 计蒜客第一场A

    #include <cstdio> #include <iostream> #include <cstring> using namespace std; char ...

  4. python in操作引发 TypeError

    在看 networkx 源代码的时候认为疑惑.为什么外层 for 要注意 TypeError.里面就不用.相同是 in, 一直纠结 node 是不是有问题,比方 node 不能够被迭代什么的,那么里面 ...

  5. VC双缓冲画图技术介绍

    双缓冲画图,它是一种主要的图形图像画图技术.首先,它在内存中创建一个与屏幕画图区域一致的对象,然后将图形绘制到内存中的这个对象上,最后把这个对象上的图形数据一次性地拷贝并显示到屏幕上. 这样的技术能够 ...

  6. VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。

    VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示: ...

  7. javaScript 立即执行函数学习笔记

    立即执行函数: 即执行函数(Immediate Functions),立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行 立即执行函数(immediate function)术语不是在ECM ...

  8. 参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码

    第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas.NumPy.IPython和Jupyter,并增加大量实际案例,可以帮助高效解决一系列数据分析问题. 第2版中的主要更新了Py ...

  9. 商业模式(三):P2P网贷平台,毛利润测算

    之前谈到P2P网贷平台,主要的收入就是"息差".        一直以来,想详细写点P2P平台的收益到底如何的,奈何自己感觉收入上的点不算多,对财务这种核心机密了解的也不多,一直没 ...

  10. FZU 1968 Twinkling lights III

    Twinkling lights III Time Limit: 8000ms Memory Limit: 131072KB This problem will be judged on FZU. O ...