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);
}