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 visualizzazioni (ultimi 30 giorni)
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.

Risposte (1)

James Tursa
James Tursa il 21 Lug 2020
Modificato: James Tursa il 21 Lug 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 Commenti
James Tursa
James Tursa il 21 Lug 2020
Modificato: James Tursa il 21 Lug 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 il 22 Lug 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.

Accedi per commentare.

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by