2014-10-30 107 views
-3

很長的重複串假設我要產生一個很長的,重複的字符串,如建築用C

"foo bar bar bar bar ... bar" 

其中bar在最終結果出現1000次。沒有內存泄漏,最簡單的方法是什麼?

+3

石膏,使用了大量的石膏。 – 2014-10-30 19:40:29

+0

如果malloc未能分配請求的內存,它將返回一個空指針,因此您可以簡單地嘗試根據需要分配儘可能多的內存,然後查看操作系統是否允許。 – IllusiveBrian 2014-10-30 19:46:22

+0

內存泄漏如何與此相關? – mafso 2014-10-30 19:54:36

回答

1

是來到我的腦海裏的第一件事是:

char *string = malloc(4004); 
int i; 
strcpy(string, "foo"); 
for(i = 0; i < 1000; i++) 
    strcat(string, " bar"); 
+2

這會很慢,因爲'strcat()'隱式地在循環內部執行'strlen()'。用'strcpy(string + 3 + 3 * i,「bar」)'替換它。 – 2014-10-30 19:49:59

+0

@LeeDanielCrocker;複雜!=速度。但除此之外,我同意。 – mafso 2014-10-30 19:52:22

+0

@LeeDanielCrocker令人印象深刻。感謝您的建議。我知道這很慢。我只是想讓他知道他是如何做到的。有很多可能的方法。 – Igor 2014-10-30 19:54:01