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?

3 visualizaciones (últimos 30 días)
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.

Respuestas (1)

James Tursa
James Tursa el 21 de Jul. de 2020
Editada: James Tursa el 21 de Jul. de 2020
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 comentarios
James Tursa
James Tursa el 21 de Jul. de 2020
Editada: James Tursa el 21 de Jul. de 2020
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 el 22 de Jul. de 2020
On some processors, stack-relative offsets are limited in the number of bits, because the offset is built in as part of the instruction.

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by