尋找創建一個動態數組的字符串值。動態內存/重新分配字符串數組
在下面的示例代碼中,意圖是在運行時添加一個新的數組項(realloc)和一個新的字符串(「string 3」)以添加到數組中。
我想象的問題是不正確地使用指針和/或realloc邏輯有什麼問題?
感謝任何幫助。
實際輸出我得到:
Before:
Array[0]: string 1
Array[1]: string 2
After:
Array[0]: string 1
Array[1]: string 2
代碼:通過這樣的
arrayIndexs = sizeof(*myArray)/sizeof(char*);
:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **myArray;
main(int argc, char *argv[])
{
int i = 0;
myArray = malloc(2 * sizeof(char*));
int arrayIndexs = sizeof(*myArray)/sizeof(char*);
//Allocate memory for each [x]
for (i = 0; i <= arrayIndexs; i++)
myArray[i] = malloc(254 * sizeof(char*));
//Populate initial values
if(myArray != NULL)
{
strcpy(myArray[0], "string 1");
strcpy(myArray[1], "string 2");
}
//Print out array values
printf("Before: \n");
for (i = 0; i <= arrayIndexs; i++)
printf("Array[%d]: %s\n",i, myArray[i]);
//Expand array to allow one additional item in the array
myArray = (char **)realloc(myArray, sizeof(myArray)*sizeof(char*));
//Allocate memory for the new string item in the array
myArray[arrayIndexs+1] = malloc(254 * sizeof(char*));
//Populate a new value in the array
strcpy(myArray[arrayIndexs+1], "string 3"); //
arrayIndexs = sizeof(*myArray)/sizeof(char*);
//Print out array values
printf("After: \n");
for (i = 0; i <= arrayIndexs; i++)
printf("Array[%d]: %s\n",i, myArray[i]);
}
如果*永遠*發現自己嘗試使用'的sizeof()'爲*任何*,其大小*動態*,你'做錯了。記住這一點。 – WhozCraig