char *ptr = (char*) malloc(ptr * sizeof(char));
char *ptr = malloc(1 * sizeof(*ptr));
В C Запрещено выполнять код, такой как код в функциях, подобных malloc()
, вне какой-либо другой функции. Таким образом, эти операторы никогда не будут работать независимо от того, как вы их переставляете.
Вам необходимо объявить указатель в глобальной области видимости и выполнить присвоение указателю, возвращаемому malloc()
внутри любой функции:
#include <stdlib.h>
#include <string.h>
char *ptr; // declare ptr as pointer with global scope.
void execute(char *splitInput)
{
//char myhistory[] = "myhistory";
int string_length = strlen(splitInput);
char *new_ptr = realloc(ptr, sizeof(char) * string_length);
strcpy(ptr,splitInput);
}
int main()
{
char s[] = "Hello World!";
ptr = malloc(1 * sizeof(*ptr)); // assign ptr to point to the memory
// allocated by malloc.
execute(s);
}
Обратите внимание, что myhistory
не используется внутри функции execute()
.