このコード、repeat char から char 配列への繰り返しを記述します。できます。
文字列配列に対して繰り返し文字列を N 回繰り返します。 ただし、文字列から文字列配列のコア ダンプを繰り返します。
A, A, A,
AB, AB, AB,
*** Error in `./untitled': free(): invalid pointer: 0x0000000000400f3d ***
....
....
Aborted (core dumped)
なぜ?私のコード:
// --cc='gcc'
[indent=4]
init
var carray = repeatc ('A', 3)
for i in carray do stdout.printf ("%c, ", i)
// A, A, A
stdout.putc ('\n')
var sarray = repeats ("AB", 3)
for i in sarray do stdout.printf ("%s, ", i)
stdout.putc ('\n')
def repeatc (e: char, n: int): array of char
var a = new array of char[n]
Memory.copy (a, &e, sizeof (char))
Memory.copy (&a[1], a, sizeof (char) * (n - 1)) // gcc
return a
def repeats (e: string, n: int): array of string
var a = new array of string[n]
// WORKS: for var i = 0 to (n - 1) do a[i] = e
// Memory.copy HOW TO?
// (CORE DUMPED)
Memory.copy (a, &e, sizeof (uint8*))
Memory.copy (&a[1], a, sizeof (uint8*) * (n - 1))
return a
このコードがコア ダンプされたのはなぜですか? とそれを修正する方法?