Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[STM32][C++] - Dynamiczna alokacja pamięci

Sparrowhawk 13 Mar 2018 14:08 747 4
  • #1
    Sparrowhawk
    Level 22  
    Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. Oczywiście coś jest nie tak, bo nigdy nie dostaję NULL, a przy większej liczbie alokowanych liczb procek się zawiesza (A mój debuger ma dziś fochy i nie odpala ;-( )

    W skrypcie linkera za sekcją bss mam:
    Code: c
    Log in, to see the code


    W pliku syscalls mam:
    Code: c
    Log in, to see the code
  • #2
    Freddie Chopin
    MCUs specialist
    Po pierwsze do "256" w skrypcie linkera dopisz co najmniej jedno zero na końcu - przy tak małym rozmiarze to nie ma prawa działać. (;

    Po drugie pokaż kod którego używasz do alokowania. Bo jeśli jest to "zwykłe" new, to ono nie zwraca błędu, tylko rzuca wyjątkiem.
  • #3
    Sparrowhawk
    Level 22  
    Ustawiłem taki mały rozmiar, aby móc to przetestować ;-)

    Alokacja:
    Code: cpp
    Log in, to see the code
  • #4
    User removed account
    User removed account  
  • #5
    Freddie Chopin
    MCUs specialist
    Sparrowhawk wrote:
    Ustawiłem taki mały rozmiar, aby móc to przetestować ;-)

    To ustaw teraz taki ZNACZNIE większy (z 10 kB) i sprawdź raz jeszcze.

    Dodano po 2 [minuty]:

    Proponowałbym też sprawdzoną implementację: https://github.com/DISTORTEC/distortos/blob/master/source/newlib/sbrk_r.cpp

    Funkcja w razie błędu ma ustawiać errno i zwrócić -1, Twoja nie ustawia errno i zwraca NULL.