To nie jest sprawa trywialna. Łańcuchy mają różną długość i zajmują różne spacje w pamięci i musi istnieć jakiś sposób, aby wiedzieć, jak długo są lub gdzie się kończą. W C lub C++, nul bajty (bajty o wartości zerowej) wskazuje koniec łańcucha. Z niektórymi innymi językami programu , masz wskaźnik do początku łańcucha i długości ciągu przechowywanych osobno, co ma tę zaletę, że pozwala ci przechowywać w łańcuchu dane binarne (w tym bajty o wartości zerowej ). Nawet z C i resztą, musisz mieć wskaźnik do miejsca, w którym zaczyna się ciąg.
Co zwykle musi się zdarzyć, to że musisz użyć asm, aby skontaktować się z systemem operacyjnym i poprosić o blok wolnej pamięci, który jest wystarczająco duży, aby pomieścić zawartość dwóch łańcuchów po ich dołączeniu.To byłaby pamięć oddzielona od jednego z dwóch ciągów, od których zaczyna się, i pochodzi z tego, co nazywa się Stosem Pamięci. Gdy otrzymasz punkt początkowy tego bloku pamięci, skopiujesz zawartość pierwszego ciągu znaków do niego, następnie kontynuuj, kopiując zawartość drugiego ciągu znaków pod numerem tuż za pierwszym. Następnie zwolnij pamięć, która została przypisana do pierwszego ciągu znaków i przypisz blok do tego ciągu, zmieniając jego wskaźnik, a być może na jego długość: . Zwolniona pamięć jest zwracana do sterty pamięci przez system operacyjny do ponownego użycia w innym miejscu.
W rzeczywistości system operacyjny nie jest jedynym źródłem zwalnianej pamięci. Niektóre kompilatory, nawet asemblery, samodzielnie zarządzają pamięcią lub dostarczają programistom odpowiednie narzędzia, aby zrobić to w razie potrzeby.
Innymi słowy, może to być bardzo ambitne przedsięwzięcie i trzeba trochę wiedzieć o tym, co się dzieje, aby zrobić to dobrze. Robisz to źle, możesz spodziewać się konsekwencji takich jak awarie systemu i konieczność ponownego uruchomienia komputera.
Montaż AT & T nie istnieje, jest to po prostu inna składnia. Chyba chodziło ci o x86? :) – BlackBear
To właśnie miałem na myśli;) – Devos50
Ok, skorzystałem z możliwości edycji Twojego zadania :) – BlackBear