我寫這個代碼, repeatc重複字符到char數組。它的工作原理是 。精靈howto重複字符串N次作爲字符串數組
重複將字符串重複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
爲什麼這段代碼核心轉儲? 和如何解決它?
嗨,我對你的代碼非常感興趣。 閱讀後給我帶來更多的問題。 1:你能顯示代碼: **返回所有指向相同位置的無主串的數組** 2:爲什麼在** repeatwithsep結尾添加**(擁有)** * *功能? ** var a **是一個局部變量,當離開這個函數時它會被銷燬? –
這真的應該是一個全新的問題,每一個stackoverflow問題都應該儘可能原子化,以便將來可以重用。 –
你是對的。我發佈2個新問題 –