我在我的程序中使用memcpy并将其用作语法.但是这个功能崩溃了.我在这里阅读了一些帖子并试图初始化我的char数组,但我没有在这里得到问题.任何人都可以看看吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
int i;
char *str_result;
char *str_dst = NULL;
str_result = (char *) malloc(100);
str_dst = (char *) malloc(100);
str_result = "Action done";
size_t len = strlen(str_result);
printf("string length is = %d\n", len);
memcpy(str_dst, str_result, len);
str_dst [len] = '\0';
for (i = 0; i < len; i++) {
printf("%s\n", str_dst[i]);
}
free(str_dst);
free(str_result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误在这里:
free (str_result);
Run Code Online (Sandbox Code Playgroud)
在该行之后str_result = "Action done";,str_result不再指向您保留的100字节内存块,而是指向字符串(const char*)"Action done".你不能释放这个指针.
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |