Racja, zgadzam się. Zmienna static bez łączności nie jest tworzona na stosie, żyje sobie od początku do końca programu, jedynie jej zasięg jest ograniczony do bloku lub funkcji, ale nadal nie rozumiem co powoduje że te zapisy są różne: W pierwszym przypadku jest najpierw (w czasie startu) inicjowana wartością zerową (NULL) a potem w funkcji (main)...
Witam, mam pytanie odnośnie obsługi sterty w arm'ach, używam gnuarm. Problem polega na tym, że funkcja malloc zwraca wartość 0. Słyszałem, że trzeba napisać własną funkcję caddr_t sbrk(int incr), jednak gdy to zrobię to jest ona dołączano do kodu wynikowego, jednak nigdy nie jest wywoływana, wywoływana jest tylko standardowa _sbrk. Moja mapa pamięci...
Jeśli _sbrk zwraca zero, to nie wiadomo co zrobi malloc. Zwracaj choć jakąś sensowną wartość z obszaru RAM. 4\/3!!
W C rzutowanie wartości zwracanej przez malloc nie jest potrzebne, a nawet przez niektórych uważane za szkodliwe: https://stackoverflow.com/questions/6058... W tym świetle wyrażenie wyglądało by tak: [syntax=c]int *x = malloc(sizeof *x);[/syntax]
gaskoin Dzięki za odpowiedź! Bytes dochodzi do wartości 53381, dlaczego malloc nie zwraca NULL jeżeli nie może za alokować danego obszaru pamięci? Ten "test" nie jest na stałe w programie, został dodany tylko do sprawdzenia czy nie wycieka mi pamięć.
No nic, trza będzie sbrk sobie napisać Przecież już został napisany i udostępniony dawno temu... (; Jeżeli proc ląduje mi w HardFault'cie to chyba ta szansa jest duża Może warto sprawdzać wartości zwracane przez malloc()? <: 4\/3!!
Nie przejrzałem całego kodu, ale od razu rzuca się w oczy błąd, na który kompilator powinien zwrócić Ci uwagę: double *oout = malloc(511 * sizeof(double)); // w C double *oout = new double[511]; // w C++
A czym by się różniło *Ptr[0] = 66; od Ptr[0] = 66; ? Przy pierwszym kompilator (GCC) wywala błąd, że "dereferencing 'void *' pointer" i "invalid use of void expression" Różnica jest zasadnicza *ptr[0] to jak **ptr czyli tablica dwu wymiarowa natomiast zapis ptr[0] rownoważny jest *prt czyli początek tablicy jedno wymiarowej. O problemach...
Nie wiem, nie ma to większego znaczenia mi się wydaję, bo i typ liczb całkowitych i typ adresowy ma po 4 bajty... przynajmniej tak pokazuje mi mój kompilator. sizeof (**pmacierz) sizeof (*pmacierz) sizeof (int) Wszystkie te funkcje zwracają wartość 4, więc przy obliczeniach nie sprawia to większego problemu, bo funkcja malloc() chce tylko konkretną...
Nie jest to żadna "druga" partia po 4kB... Spróbuj zrozumieć jak działa ten mechanizm a nie szukaj w nim dziury. malloc() wewnętrznie ma swój "pool" pamięci do przydziału, który domyślnie jest pusty. Jeśli prosisz o alokację i malloc() w swoim poolu nie ma wystarczającej ilości (lub odpowiedniego "układu") pamięci aby spełnić to żądanie, to prosi funkcję...
Typ **ptr to wskaźnik do wskaźnika. Jest użyty ponieważ compress_jpeg zwraca w nim adres pamięci pod którym został zapisany obraz jpeg. Dlatego powinien być użyty w taki sposób: compress_jpeg(tablica_RGB, 64, 64, &tablica_jpeg); Druga sprawa to użyty tu output manager sam alokuje potrzebną pamięć, dlatego podajesz tylko sam wskaźnik, nie trzeba...
Teoretycznie funkcja malloc() przy braku miejsca zwraca NULL- jednak nie używam dynamicznej alokacji pamięci także ten sposób odpada napisać funkcję kontrolującą stos, odpalić w symulatorze tylko jak taka funkcja miała by wyglądać coby informowała o nałożeniu się stosu na sekcje danych... jedyne rozwiązanie jakie mi przychodzi do głowy to właśnie porównywać...
Z góry dziękuje za wszelką okazaną pomoc, czy mógłby ktoś proszę sprawdzić ten kod? Program ma za zadanie stworzyć tablicę wskaźników. z których każdy wskazuje na obiekt o rozmiarze dokładnie odpowiadającym, rozmiarowi przechowywanego w nich ciągu znaków. W książce jest określone że wskaźnik użyty do przechowywania wartości zwracanej z malloc() powinien...
Dodatkowo, zdecyduj się, czy tablicę ByteOutput przydzielasz w funkcji wołającej i przekazujesz do rc4() (lepsze rozwiązanie), czy przydzielasz wewnatrz rc4() i zwracasz przez wskaźnik. Obecnie (z zakomentowaną funkcja malloc) wskaźnik temp pokazuje w krzaki (nie jest mu nadawana wartość początkowa), więc odwołania do niego z dużym prawdopodobieństwem...
Owszem. Ale to makro jest definiowane co najmniej na dwa sposoby, np. w konkretnych aplikacjach przykładowych z STM. Czyli widać jasno że problem znany ludziom z STM i sami panują jakoś nad tym. Starasz się ich wybielić, co jest zupełnie niepotrzebnie, bo ich dokonania na przestrzeni lat pokazują, że o programowaniu zbyt wiele nie wiedzą. Przykładowo...
Pisząc w C tego nie wiesz i wiedzieć nie będziesz (chyba, że zajrzysz w wygenerowany przez kompilator kod assemblera - co swoją drogą jest czasami przydatne). Nie wiem jak daleko działa REGISTER, ale prawdopodobnie kompilator patrzy bardziej na to jak na mocną sugestię niż 100% wymuszenie, bo co by zrobił gdybyś zrobił 20 zmiennych int jako REGISTER?...
int *funkcja(int par1, int par2, int par3,int par4,int par5) { int wynik[2]; // jakieś tam obliczenia na przesłanych danych wynik[0]=2; wynik[1]=11; return wynik; } Na przyszkość: Zdecydowanie odradzam tego typu praktyki - tablica jest tworzona na stosie, z funkcji zwracasz wskaźnik, jeszcze poprawny, ale w...
Google się popsuło? http://stackoverflow.com/questions/63809... W skrócie - brak deklaracji funkcji fdodaj(), więc kompilator przyjmuje domyślnie typ zwracany jako int. Nie przyglądałem się dokładnie programowi, ale jest kilka innych "ciekawych" rzeczy - np. po co przekazujesz do funkcji fdodaj() parametr...
Nie wiem czy dobrze rozumiem do czego dążysz ale możesz napisać coś takiego int funkcja(char *wsk) { *(wsk+3) = 2; return (int)*(wsk+3); } wywołanie char data Nie, nie o to mi chodziło. Tutaj odwołujesz się tylko do 4 elementu tablicy. Dodano po 1 Czyli to: Tym zapisem zwiększasz wartość elementów tablicy tak? A nie można było zapisać tego tak *wsk...
nie wklejaj kodu jako zwykły tekst bo fragment kodu [syntax=text]tab[i][/syntax] zostanie zinterpretowany jako kursywa, bo nawiasy kwadratowe w kodzie są interpretowane przez serwer i zostanie wyrenderowany tekst inny niż wkleiłeś. Miałeś wcześniej info od moderatora i się do tego dostosuj. w komentarzach napisałem co wypadałoby zmienić [syntax=c]#include...
Witam. Rozkminiam sobie C i próbowałem dynamicznie zaalokować dwuwymiarową tablicę o rozmiarze 6*n. Dla n=1 jest ok, dla większych wartości - zwraca segmentation fault. Program ma ją wczytać i wypisać. Sprawdźcie: [syntax=c]#include<stdio.h> #include<stdlib.h> int main(void) { int n,i,j; scanf("%d",&n); int **tab = malloc(6 * sizeof...
strlen- zwraca ci długośc Stringa bez znaku terminującego string czyli 0x00. dodanie dwóch stringów powinno tworzyć stringa o 1 dłuższego niż wartość strlen jaka jest zwracana. Na ostatnim miejscu natomiast trzeba dodać znak terminujący 0x00. Funkcje IO w C (char * to string z C ) operuja na stringach opartych na tablicy charów zakonczonych 0x00 , brak...
Nie ma żadnych błędów kompilacji, tylko po uruchomieniu wyskakuje okno Unhandled exception, czyli program w ogole nie działa, zatrzymuje sie na samym poczatku funkcji usun_po_kluczu. Nie wiem gdzie leży blad. Polecenie do zadania: Celem zadania jest implementacja słownika w postaci listy dwukierunkowej (niecyklicznej): Implementacja nie może...
Używam visual studio :) znalazłem właśnie przed chwilką time.h oraz całą strukturę z opcjami, niestety nie wiem jak jej użyć. Link do angielskiej wiki: time_t curtime; struct tm *loctime; /* Get the current time. */ curtime = time (NULL); /* Convert it to local time representation. */ loctime = localtime (&curtime); loctime = loctime->tm_year;...
Powinieneś jeszcze pomyśleć o sytuacji, gdy masz pustą linię, ale przed znakiem nowej linii są biale znaki (spacje, tabulatory). Rozwiązanie które zaproponowałeś zadziała, ale tylko w przypadku znaku nowej linii na początku wiersza. Oto moja propozycja (fragment modułu parsującego plik konfiguracyjny demona, zarządzającego połączeniami ze sterowanikiem...
Nie wiem jak się zabrać za funkcję wstawianieX -chodzi o wylosowanie i wstawienie do listy X wartosci z przedziału. Szczegoły w komentarzy przy funkcji. Jakies porady? [syntax=cpp] #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct element { // // int klucz; // struktura pojedynczego elementu listy...
Witam ponownie po dłuższej przerwie. W międzyczasie usunąłem jeszcze jeden zauważony błąd powodujący zawieszenie się odtwarzacza, a przedtem wyświetlenie śmieci na LCD. Błąd ten pojawiał się, gdy do odtwarzacza włożyło się nowo zakupioną lub pustą po formacie kartę SD. Błąd ten usunąłem modyfikując fragment funkcji main, jak poniżej: if (! (AT91F_PIO_GetInput(AT91C_BASE_P...
Fragment przytocze, nic nowego. Checksums For verifying transmitted data of more than one byte length an 8 bit CRC is appended. The used CRC polynomial is as follows: X 8 + X 5 + X 4 + X 0 An example C-code of a generator with this polynomial is given in Annex A I tu C ktorego nie czaje..W kazdym razie jest tam tablica z danymi tak jak np w tym ( za...
https://obrazki.elektroda.pl/3743484600_... Witajcie moi drodzy Przedstawię tutaj mojego shielda (nakładkę) na Arduino UNO opartego o układ ENC424j600. Shield ten pozwala podłączyć Arduino do internetu bez żadnego lutowania, a nawet bez użycia kabelków i płytek stykowych. W temacie dam jedenaście pełnych przykładów jego użycia z moimi...
Dzień dobry. Zwracam się z problemem zmiany kontekstu danych w freeRTOSie którego właściwie nie potrafię zdefiniować z nazwy, otóż : Mikrokontroler STM32F303 współpracuje z wyświetlaczem LCD ITM 400x160 - matryca 8000 bajtów (pamięć ekranu) zdefiniowana w pamięci RAM jest na bieżąco wysyłana do wyświetlacza w przerwaniu z priorytetem wyższym niż RTOS...
Wprowadziłem takie zmiany, kompiluje się i tym razem taki błąd: _CrtIsValidHeapPointer(pUserData) [syntax=cpp] #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct element { int pole1; char pole2; double pole3; }el_nowy; el_nowy** losowanie(int N) // pobiera jako argument liczbe N struktur, ktore maja...
zwracać wartość zwracać maksymalny wartość malloc zwraca wartość
angielskie wtyczki iskrzy instalacja skrzynia zamknięta
Deutz F2L511 – luz zaworowy ssący i wydechowy 0,15 mm – regulacja i specyfikacja Harley-Davidson – nagły wzrost przebiegu po remoncie silnika, licznik pokazuje za dużo km