gpt4 book ai didi

c - 另一个动态内存分配错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:10 24 4
gpt4 key购买 nike

我正在尝试为多维数组(8 行,3 列)分配内存。

这是分配的代码(我相信这个错误对你来说很清楚)

char **ptr = (char **) malloc( sizeof(char) * 8);

for (i = 0; i < 3; i++)
ptr[i] = (char *) malloc( sizeof(char) * 3);

当我引用这个时崩溃发生了:

ptr[3][0];

Unhandled exception at 0x0135144d in xxxx.exe: 0xC0000005: Access violation writing location 0xabababab.

是否有针对此类主题的推荐引用/读物?

谢谢。

最佳答案

第一个malloc()是错误的。应该是:

malloc(sizeof(char*) * 8)

A char* 是 4 字节(或 8 字节...见 P.S)而 char 是 1 字节。当您编写 ptr[3] 时,编译器会假设您要访问 ptr + 3*sizeof(char*)。因此,您将访问未分配的内存。

附言:

更准确地说,char*在32位系统上是4字节,在64位系统上是8字节。

关于c - 另一个动态内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com