我有以下代碼在使用asprintf
和realloc
時都不起作用。asprintf覆蓋內存realloc
我得到的錯誤是:
*** glibc detected *** a.out: realloc(): invalid old size: 0x006f1430 ***
基於我已經研究它看起來像當我使用asprintf
它覆蓋一些內存realloc
用途。這對我沒有意義,因爲asprintf
應該是安全的並且使用適當的字符串長度進行動態分配。不使用asprintf
會導致程序運行正常,但我需要爲我的項目提供asprintf
的功能。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int ifCount = 1;
int stringCount = 1;
char** IFs = NULL;
//Broken code
char* message;
asprintf(&message, "Hello: %d", stringCount);
//Working code, but not the alternative I want to take
//char* message = "Hello";
IFs = (char**) realloc(IFs, sizeof(char*) * ifCount);
IFs[ifCount - 1] = (char*) realloc(IFs[ifCount - 1], sizeof(char) * strlen(message));
strcpy(IFs[ifCount - 1], message);
printf("Message: %s\n", message);
printf("Copy: %s\n", IFs[ifCount - 1]);
free(message);
}
當你的問題在這裏得到解決時,不要改變你的帖子的名字,以便在你的問題中包括'(回答)'。只需通過解決問題的答案單擊複選標記 – Mike