-2
所以編碼時幫助我把我學到的東西整合到一個隨機項目中。爲了更好地幫助我並理解編碼。我後來才知道getenv,並正在測試它。工作得很好,直到我回到上學習C工作,並再次打開該項目...getenv C的分割錯誤?
#include <stdio.h>
#include <strings.h>
#include <windows.h>
#include <stdlib.h>
struct envvariabl3s
{
char *userprofile;
char *systemroot;
};
void loginscreen(void)
{
int testbit = 4000000000;
struct envvariabl3s *envariable;
char *memtes;
printf("\nWelcome to the login screen...\n");
memtes = malloc(20 * sizeof(char));
if(memtes == 0)
{
printf("Error: Not enough memory!");
}
strcpy(memtes, "Herp De Derp");
printf("\nDynamically allocated memory is %s", memtes);
free(memtes);
envariable->userprofile = getenv("USERPROFILE"); //SEGFAULT HERE
envariable->systemroot = getenv("SystemRoot");
printf("\nUserProfile is: %s", envariable->userprofile);
printf("\nSystem Root is: %s", envariable->systemroot);
printf("%d", sizeof(testbit));
}
對不起,我是一個白癡o-e我不小心刪除了這個結構,並沒有意識到它。抱歉! – John
它應該是struct envvariabl3s * envariable,datvar;然後有變化=&datvar; – John
考慮採用在C/C++中始終顯式初始化變量的做法。如果你在聲明的位置初始化你的指針爲'NULL',這將更容易被捕獲。 – jia103