لماذا هذا الرمز تسبب خطأ وقت التشغيل؟
-
20-09-2019 - |
سؤال
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *a = "Hello ";
const char *b = "World";
printf("%s", strcat(a, b));
system("PAUSE");
return EXIT_SUCCESS;
}
المحلول
ولأنك كتابة البيانات في موقع الذاكرة التي لا تملك.
والواقع، عند تشغيل strcat، كنت إلحاق الأحرف من سلسلة ب مباشرة بعد الأحرف من سلسلة أ. ولكنك لم أدعى للذاكرة بعد سلسلة أ.
نصائح أخرى
وعندما كنت وصل ب لكنت تكتب في الذاكرة التي لم تخصص،
لا تنتمي إلى StackOverflow