#cpp
Rozumiem, że stosowanie uniqueptr i shareeptr ma na celu automatyczne zwalnianie pamięci w momencie gdy skończy się zakres dla jakichś zasobów zajętych dynamicznie?
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VanQator: poczytaj sobie w idiomie RAII. Te dwa opakowania na wskaznik wspomagaja wlasnie te technike, ktora jest kluczem do radykalnej redukcji liczby bledow w programach pisanych w c++
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@VanQator: chodzi o to, że praktykujesz flood na tym tagu, czyli często zadajesz pytania na które znajdziesz odpowiedź w google w 5 minut i tylko zaśmiecasz w--------c innych. Ja Cię zgłaszam.
  • Odpowiedz
#cpp
Czy można stworzyć klasę konkretną dziedziczącą po klasie abstrakcyjnej, która nie posiada implementacji, którejś z funkcji wirtualnej klasy bazowej, czy jest to bezwzględnie zabronione?
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej, napisałem sobie liba do fiberów i nonblocking IO, można pisać w C lub C++ tak jak w Go: libfev

Zrobiłem też kilka benchmarków i w ten lib daje radę zrobić w jednym benchmarku 172% więcej requestów/s niż Boost.ASIO, 77% więcej niż Tokio (rust), 40% więcej niż async-std (rust) i 16% więcej niż Go: async-bench

#programowanie #cpp #rustlang #golang
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Po całym dniu szukania znalazłem błąd - zamiast 1 powinno być 0 w create endorsement. Wreszcie działa przykład tworzenia transakcji z wykorzystaniem libbitcoin i zapisywaniem danych przez OP_RETURN :D
Kod https://github.com/pantadeusz/bitcoin-experiments/tree/master/op_return_cpp_nodejs
Transakcja https://live.blockcypher.com/btc-testnet/tx/279497594bb14d778d1248ecd63f3b1014fd1cd2af3cfefc852bdc248617819f/
#bitcoin #cpp
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

C++ jest zarąbiste.

Jest sobie pewne API, które implementuje własną klasę Unicode'owych stringów (no ok, zdarza się...).
I te stringi mają funkcję .ToUStr(), która daje dostęp do bufora 16-bitowych znaków dzięki niejawnej konwersji na const unsigned short*.
Napisałem funkcję, która ma przyjmować bufor znaków i chcę ją wywołać przez Funkcja(string.ToUstr()), a dla wygody zrobiłem typedefa i teraz następuje najlepsze:
- jak zrobię typedef unsigned short* Ptr; i potem Funkcja(const Ptr ptr) { }
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MostlyRenegade: jest prosta zasada. Const aplikuje się do tego co jest po lewej, chyba, że nic nie ma po lewej to wtedy do tego co jest po prawej.

const short* -> zmienny wskaznik na stałą
short const* -> to samo, to tak zwany "east-const",przez niektórych uważany za jedyny słuszny zapis, bo działa logicznie z zasadą "to co po lewej stronie"
short * const -> stały wskaznik na zmienną
short const * const -> stały
  • Odpowiedz
@VanQator: nie wiem czemu ma służyć ten cudak i po co się to stosuje bo nie wgłębiałem się nigdy za bardzo w programowanie obiektowe za to wgłębiałem się w sam język programowania i wydaje mi się, że w GetProduct() masz memory leak. ja wiem ze to tylko przykład ale warto wyrobić jakieś nawyki ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@zwei: Widziałem to już wcześniej i próbowałem. Z musi być wyzerowane, bo nie wiem co za śmieci dostaję z zewnątrz. Są jakieś bardziej eleganckie metody?
Segfaulty wyrzuca dopiero przy którymś kolejnym teście. Jeśli masz błąd już w pierwszym z nich to dalsze nie są przeprowadzane i dlatego nie pojawia się segfault ;)
  • Odpowiedz
Z musi być wyzerowane, bo nie wiem co za śmieci dostaję z zewnątrz. Są jakieś bardziej eleganckie metody?


No tak, ja zmieniam z na 1 na samym końcu przed returnem jeśli jest 0.

Jeśli masz błąd już w pierwszym z nich to dalsze nie są przeprowadzane i dlatego nie pojawia się segfault ;)


@TheCao: no to wykluczyłem wstawiając 1 tylko wtedy, gdy z wychodzi na końcu 0. Z tym że
  • Odpowiedz
Jaki początkujący kurs nauki języka C++ polecacie?
Kiedyś trochę liznąłem ze strony cpp0x.pl i było spoko, ale nie wiem czy ten kurs nie jest już przestarzały. Odnośnie Mirosława Zelenta to z tego co wiem, uczy on złych nawyków, także wolałbym nie.
#cpp #cpp0x #programowanie #naukaprogramowania
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@erdwa: a musi być c++? Pracuję pisząc w tym języku i nie polecam. Ja uczyłem się z "Symfonia C++", ale nie poleciłbym nikomu tej książki
  • Odpowiedz
@erdwa: skomplikowany język, bardzo duży bagaż naleciałości, łatwo sobie strzelić w stopę. Od strony developera to bardzo słaby tooling w postaci IDE/systemów budowania/zarządania zależnościami. Oczywiście C++ ma swoje zastosowania, ale jeśli dopiero uczysz się programowania to lepiej wybrać coś innego. Osobiście poleciłbym Pythona (popularny, prosty, ma swoją niszę w data science), JS (tego języka możesz użyć do dosłownie każdego zadania), ewentualnie Java/C# (jak chcesz robić duże systemy w korpo).
  • Odpowiedz
#cpp
Czy warto uczyć się frameworków jak QT, SFML, czy raczej niskopoziomych bibliotek jak winapi czy opengl?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VanQator: SFML jest raczej nastawiony do 2D, lepszy od niego wydaje mi się być SDL2 - bardziej uniwersalny, ale więcej musisz zrobić sam.
OpenGLa warto przynajmniej poznać, żeby w razie potrzeby dodania jakiegoś fajnego efektu wiedzieć że da się to zrobić.
  • Odpowiedz
Czy da się 'wstrzyknąć' spreparowany pakiet tcp do istniejącego połączenia i wysłać go do zdalnego hosta?
Na windowsie jeżeli proces ustanowił połączenie, a ja chcę z innego procesu przechwytywać komunikację, a czasami dodać do niej coś od siebie, to jednym z rozwiązań mogłoby być jakieś lokalne proxy. Drugie wyjście to DLL injection, które podmieniłoby mi wskaźniki send(), recv() itd... z API winsock2 na odpowiedniki z mojej biblioteki. Ale czy nie dałoby
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PeeM69: c++ to syf, jesli chodzi o biblioteki: jak nie wiesz jak wszystko działa pod spodem to można tylko płakać, jak coś się wgra i nie działa. Najprościej jest użyć jakieś biblioteki header-only: google po wpisaniu "cpp fft header only" poleciło mi to https://github.com/jdupuy/dj_fft . Tylko pamiętaj, że jak używasz takich bibliotek to musisz pamiętać o włączonych optymalizacjach "g++ -O3", inaczej twój kod może być za wolny
  • Odpowiedz