【发布时间】:2011-10-28 08:00:50
【问题描述】:
我遇到以下类型的代码问题:
int* myPointer1 = malloc(50 * sizeof(int));
int* myPointer2 = malloc(50 * sizeof(int));
free(myPointer1);
myPointer1 = myPointer2;
myPointer1[0] = 3;
我遇到了分段错误。有什么问题?
【问题讨论】:
-
您检查以确保 malloc 操作成功了吗?如果没有,您可能会将 myPointer1 分配给 NULL。
-
你的段错误在哪里?在
free(myPointer1)或myPointer1[0] = 3上? -
如果
malloc成功,则应该没有段错误。您所做的只是释放myPointer1的原始内存位置的内存,然后将myPointer1重新分配给myPointer2的位置。但是请注意,如果您要释放最后一位内存,您只需释放其中一个指针(即myPointer1或myPointer2),因为它们指向同一个地址。 -
更多关于使用的编译器和编译器标志的信息会很有帮助。这可能是一个优化器问题。
标签: c pointers segmentation-fault