首页 新闻 赞助 找找看

C语言中molloc内存问题

0
[已关闭问题] 关闭于 2018-08-20 13:17

贴上代码:

        
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void main()
{
        char *buf = NULL;
        const char *str = "   i am student, you are teacher   ";
        buf = (char *)malloc(sizeof(str) * 2);
        memset(buf, 0, sizeof(buf));
        strcpy(buf, str);


        printf("buf:%s \n", buf);
        free(buf);
        buf = NULL;
}
        
编译器使用的是微软visual studio 2012版本.
问题:printf打印的时候总是触发断点,进入到malloc.c文件的_heap_alloc(size_t size)函数中.个人感觉buf指针作为堆上内存空间的指针,在strcpy函数之前buf指针并没有改动,问题可能出现在strcpy方面,求大神帮忙解答!!!!!

匡吉的主页 匡吉 | 菜鸟二级 | 园豆:204
提问于:2018-08-20 11:54
< >
分享
所有回答(2)
0

这里分配空间,就有问题了吧,str是指针,sizeof(str)的值为4,哪怕乘以2也只有8个字节,而字符串显然不止8个字节。

匡吉 | 园豆:204 (菜鸟二级) | 2018-08-20 13:17
0

sizeof(str)是个什么鬼,这个应该只有4个字节吧,应该是strlen(str)吧,

_Roy | 园豆:489 (菜鸟二级) | 2018-08-20 13:30

是的,找到问题了

支持(0) 反对(0) 匡吉 | 园豆:204 (菜鸟二级) | 2018-08-20 13:31

@匡吉: 

#include <stdio.h>

int main(){
char buff[5] ={'a','b','c','d','f'};
printf("%d\n",sizeof(buff));
}

像这种写法才可以

支持(0) 反对(0) _Roy | 园豆:489 (菜鸟二级) | 2018-08-20 13:36

@_Roy: 我弄混了指针变量和内存空间变量的区别,指针变量不是具体的内存空间.

支持(0) 反对(0) 匡吉 | 园豆:204 (菜鸟二级) | 2018-08-20 13:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册