0

アセンブリで2つの文字列を連結しようとしていますが、機能していないようです。私は次のコードを持っています:

.data

message: .asciz "message"
leading: .asciz "leading"

.globl main

main:
    push $message
    push $leading

    call strcat

    push %eax

    call printf
...

16文字を超える文字列を別の文字列に追加しようとすると、gdbによるstrcat呼び出しでセグメンテーション違反が発生します。ここで何かが足りませんか?strcatを16文字より長い文字列で動作させる方法はありますか?

ありがとうございました!

4

1 に答える 1

2

合計16バイトを超えて割り当てていません。結果の文字列が宛先に収まるように、十分なメモリを予約する必要があります。

于 2012-06-06T13:26:11.740 に答える