本文主要是介绍C++动态内存分配(动态内存分配函数)栈区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
内存拷贝函数:
void *memcpy(void *dest,const void *src,size_tn);#include<string.h>
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest内存地址的起始位置
分配内存使用new 例如:salary=new int[num];
最后需要释放内存:delete [] salary;
程序为工人工资数组分配内存代码:
源数组为10个元素,输入12个元素进行测试
并将超过10元素的,都赋值为18
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdlib.h>
#include<string.h>int main()
{int num = 0;int* salary = NULL;int farmer[10] = { 2000,3000,5000,1555,6000,9888,4561,2584,7895,6359 };printf("雇佣工人数量:");scanf("%d", &num);//分配内存salary = new int[num];//内存拷贝memcpy(salary, farmer, sizeof(farmer));for (int i = sizeof(farmer) / sizeof(int); i < num; i++){*(salary + i) = 18;}//输出for (int i = 0; i < num; i++){printf("第%d个工人的工资为%d\n", i + 1, salary[i]);}//删除内存delete[] salary;system("pause");return 0;
}
原理图:
在进行内存拷贝函数时,将farmer数组的起始位置开始的40个字节拷贝到salary指针所指的堆区
并且前40个字节按照原来的进行分配,后面均赋值18
这篇关于C++动态内存分配(动态内存分配函数)栈区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!