在C++的class类中,要分配一块大的内存,该如何操作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++的class类中,要分配一块大的内存,该如何操作?相关的知识,希望对你有一定的参考价值。
使用new操作符时,
在class类中,是这样定义的:BYTE *middle_buffer=new BYTE【1024*1024*3*3】;
出现图片上的错误,求大神帮忙看下
一般类的声明放在.h中,类的实现放在.cpp中。
什么是变量的声明,什么是变量的定义?
变量声明:int a; // 此时不分配内存
变量定义:int a = 20; // 此时分配内存
一般C++类中头文件是声明一个变量,CPP中去初始化这个变量。
-------------------------------.h文件------------------------------------
class A
private:
BYTE* middle_buffer;
-----------------------------.cpp文件-----------------------------------
class A
A()
middle_buffer = new BYTE[1024*1024*3*3] ;
正常是这样用的。
还有一种就是静态变量,这个变量是可以直接初始化的,
class A
private:
static BYTE* middle_buffer = new BYTE[1024*1024*3*3] ;
一般标准做法还是在头文件中声明,在CPP中定义。
-------------------------------.h文件------------------------------------
class A
private:
static BYTE* middle_buffer;
-----------------------------.cpp文件-----------------------------------
BYTE* middle_buffer = new BYTE[1024*1024*3*3] ;
class A
追问
你回答的很详细,谢谢了~~也谢谢上面其他各位,你们的回答都很正确。
我想问下,对于大的数组你一般是怎么处理的?就上面的middle_buffer【1024*1024*3*3】,如果我在class类中定义数组如:BYTE middle_buffer[1024*1024*3*3];时,编译是可以通过的,但是链接时就会出错的,应该是由于栈上的内存不够分配引起的~你要是遇到的话,会怎么解决?求教
在类里面定义一个BYTE* middle_buffer的变量。
然后在构造函数里面 middle_buffer = new BYTE[1024*1024*3*3] ; 参考技术B 类成员是不允许在定义的时候初始化的,除非是静态常量整形成员如::static const int i=0; 参考技术C lcyasdlcy 有道理,分配大的内存你可以声明一个大的数组,再不然你就用动态链表之类的,得看你的操作类型
以上是关于在C++的class类中,要分配一块大的内存,该如何操作?的主要内容,如果未能解决你的问题,请参考以下文章