Why the memory Limitation to a data structure in cpp: size of "XXX::C_Su​bNetwork::​S_ListBuff​er [3]" >= 256 Mb and can I raise the limit higher?

조회 수: 1 (최근 30일)
How can I use more than 256Mb of memory for a data structure in cpp (visual studio)? Can I set the memory Limit to 1 GB of memory ?
The ERROR:
File C:\xxxxx\Source\TRUNK\aaaaa\Subnet.h line 550
Error: Limitation: size of "XXX::C_SubNetwork::S_ListBuffer [3]" >= 256 Mb
S_ListBuffer ms_DataBuffer[mu8BufferSize];
S_ListBuffer is a structure that is member variable.

답변 (1개)

James Tursa
James Tursa 2020년 7월 21일
편집: James Tursa 2020년 7월 21일
This looks like you are declaring this variable as a local variable, in which case the memory for it will come off of the stack. The stack has a much smaller memory limit than the heap. You should allocate this variable from the heap with the new[] operator. (I.e., declare it as a pointer and assign it the result of a new[] operator). Be sure to delete[] it when you are done with it.
S_ListBuffer *ms_DataBuffer = new S_ListBuffer[mu8BufferSize];
:
delete[] ms_DataBuffer;
  댓글 수: 3
James Tursa
James Tursa 2020년 7월 21일
편집: James Tursa 2020년 7월 21일
I don't use Polyspace, so I have no idea how to increase the stack size and have "Polyspace follow." But, really, variables this size should be coming from the heap IMO.
Walter Roberson
Walter Roberson 2020년 7월 22일
On some processors, stack-relative offsets are limited in the number of bits, because the offset is built in as part of the instruction.

댓글을 달려면 로그인하십시오.

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by